admin 管理员组

文章数量: 887007

3.4.1 单表查询中的例题 (作业10

以下查询例子都是通过下面创建的表进行查询的:

学生表student:

 课程表course:

 成绩表result:

一、选择表中的若干列

1. 查询全体学生的学号和姓名

SELECT sname,sno
FROM student;

 

 

2. 查询全体学生的学号、姓名、所在系

SELECT sname,sno,sdept
FROM student;

 

 

3. 查询全体学生的详细记录

SELECT *
FROM student;

 

 4. 查询全体学生的姓名及其出生年份

SELECT sname,2022-sage
FROM student;

 

 

5.  查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名

SELECT sname NAME,'year of birth:'birth,2020-sage birthday,
LOWER(sdept)department
FROM student;

二、选择表中的若干元组 

6. 查询选修了课程的学生学号

SELECT DISTINCT sno
FROM result;

 

 

7. 查询cs系全体学生的名单

SELECT sname
FROM student
WHERE sdept='cs';

 

8. 查询所有年龄在17岁以下的学生姓名及其年龄

SELECT sname,sage
FROM student
WHERE sage<17;

 

 

 9. 查询考试成绩有不及格的学生的学号

SELECT DISTINCT sno
FROM result
WHERE sgrade<60;

 

10. 查询年龄在15至20岁(包括15岁和19岁)之间的学生的姓名,性别和年龄

SELECT sname,sdept,sage
FROM student
WHERE sage BETWEEN 15 AND 20;


11. 查询年龄不在15至20岁之间的学生姓名,性别和年龄

SELECT sname,sdept,sage
FROM student
WHERE sage NOT BETWEEN 15 AND 20;


12. 查询计算机科学系cs、 as 和 ff 系别学生的姓名和性别

SELECT sname,sdept,sage
FROM student
WHERE sdept IN('cs','as','ff');


13. 查询既不是 cs 、as 也不是 bfg 系别的学生的姓名和性别

SELECT sname,sdept,sage
FROM student
WHERE sdept NOT IN('cs','as','bfg');


14. 查询学号为20010的学生的详细情况

SELECT *
FROM student
WHERE sno='20010';


15. 查询所有姓李的学生的姓名,学号和性别

SELECT sname,sno,ssex
FROM student
WHERE sname LIKE'李%';


16. 查询姓张且全名为三个汉字的学生的姓名

SELECT sname
FROM student
WHERE sname LIKE'张__';


17. 查询名字中第二个字为文的学生的姓名和学号

SELECT sname,sno
FROM student
WHERE sname LIKE'_文%';


18. 查询所有不姓李的学生姓名

SELECT sname
FROM student
WHERE sname NOT LIKE'李%';


19. 查询 HTML 课程的课程号和学分

SELECT cpno,ccredit
FROM course
WHERE cname LIKE'HTML';


20. 查询以 Ja 开头且倒数第三个字符为 O 的课程的详细情况

SELECT *
FROM course
WHERE cname LIKE'Ja%O__';


21. 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号

SELECT sno,cno
FROM result
WHERE sgrade IS NULL;


22. 查所有有成绩的学生学号和课程号

SELECT sno,cno
FROM result
WHERE sgrade IS NOT NULL;


23. 查询计算机科学系 cs 年龄在15岁以下的学生姓名

SELECT sno
FROM student
WHERE sdept='cs'AND sage<15;

 

 三、ORDER BY子句

24. 查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列

SELECT sno,sgrade
FROM result
WHERE cno='3'
ORDER BY sgrade DESC;

 

25. 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列

SELECT *
FROM student
ORDER BY sdept,sage DESC;

四、聚集函数(aggregate functions) 

26. 查询学生总人数

SELECT COUNT(*)
FROM student;

 

27. 查询选修了课程的学生人数

SELECT COUNT(DISTINCT sno)
FROM result;

 28. 计算1号课程的学生平均成绩

SELECT AVG (sgrade)
FROM result
WHERE cno='1';

 29. 查询选修1号课程的学生最高分数

SELECT MAX(sgrade)
FROM result
WHERE cno='1';

 30. 查询学生10001选修课程的总学分数

SELECT SUM(ccredit)
FROM result,course
WHERE sno='10001'AND resulto=courseo;

 

 五、GROUP BY子句

31. 求各个课程号及相应的选课人数

SELECT cno,COUNT(sno)
FROM result
GROUP BY cno;

 

  32. 查询选修了3门以上课程的学生学号

SELECT sno
FROM result
GROUP BY sno
HAVING COUNT(*)>3;

 

  

 

 

 

 

 

 

 

 

本文标签: 341 单表查询中的例题 (作业10