数据库SQL查询习题2:设教学数据库Education有三个关系

目录

设教学数据库Education有三个关系:

1、查所有年龄在20岁以下的学生姓名及年龄。

2、查考试成绩有不及格的学生的学号。

3、查所年龄在20至23岁之间的学生姓名、系别及年龄。

4、查计算机系、数学系、信息系的学生姓名、性别。

5、查既不是计算机系、数学系、又不是信息系的学生姓名、性别。

6、查所有姓“刘”的学生的姓名、学号和性别。

7、查姓“上官”且全名为3个汉字的学生姓名。

8、查所有不姓“张”的学生的姓名。

9、查DB_Design课程的课程号。

10、查缺考(即GRADE没有赋值)的学生的学号和课程号。

11、查年龄为空值的学生的学号和姓名。

12、查计算机系20岁以下的学生的学号和姓名。

13、查计算机系、数学系、信息系的学生姓名、性别。

14、查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。

15、查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。

16、查询学生总人数。

17、查询选修了课程的学生人数。

18、计算选修了C1课程的学生平均成绩。

19、查询学习C3课程的学生最高分数。

20、查询各个课程号与相应的选课人数。

21、查询计算机系选修了3门以上课程的学生的学号。

22、求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。

23、查询每个学生及其选修课程的情况。

24、查询选修了C2课程且成绩在90分以上的所有学生。

25、查询每个学生选修的课程名及其成绩。

26、统计每一年龄选修课程的学生人数。

27、查询选修了C2课程的学生姓名。

28、查询与“张三”在同一个系学习的学生学号、姓名和系别。

29、查询选修课程名为“数据库”的学生学号和姓名。



设教学数据库Education有三个关系:

学生关系S(SNO,SNAME,AGE,SEX,SDEPT);

学习关系SC(SNO,CNO,GRADE);

课程关系C(CNO,CNAME,CDEPT,TNAME).

查询问题:

1、查所有年龄在20岁以下的学生姓名及年龄。

SELECT SNAME,AGE
FROM S
WHERE AGE<20

 

2、查考试成绩有不及格的学生的学号。

SELECT DISTINCT SNO
FROM SC
WHERE GRADE<60

 

3、查所年龄在20至23岁之间的学生姓名、系别及年龄。

SELECT SNAME,SDEPT,AGE
FROM S
WHERE AGE BETWEEN 20 AND 23

 

4、查计算机系、数学系、信息系的学生姓名、性别。

SELECT SNAME,SEX
FROM S
WHERE SDEPT IN ('CS','MA','IS')

 

5、查既不是计算机系、数学系、又不是信息系的学生姓名、性别。

SELECT SNAME,SEX
FROM S
WHERE SDEPT NOT IN ('CS','MA','IS')

 

6、查所有姓“刘”的学生的姓名、学号和性别。

SELECT SNAME,SNO,SEX
FROM S
WHERE SNAME LIKE '刘%'

 

7、查姓“上官”且全名为3个汉字的学生姓名。

SELECT SNAME
FROM S
WHERE SNAME LIKE '上官_'

 

8、查所有不姓“张”的学生的姓名。

SELECT SNAME
FROM S
WHERE SNAME NOT LIKE '张%'

 

9、查DB_Design课程的课程号。

SELECT CNO
FROM C
WHERE CNAME = 'DB_Design'

 

10、查缺考(即GRADE没有赋值)的学生的学号和课程号。

SELECT SNO,CNO
FROM SC
WHERE GRADE IS NULL

 

11、查年龄为空值的学生的学号和姓名。

SELECT SNO,SNAME
FROM S
WHERE AGE IS NULL

 

12、查计算机系20岁以下的学生的学号和姓名。

SELECT SNO,SNAME
FROM S
WHERE SDEPT = 'CS' AND AGE<20

 

13、查计算机系、数学系、信息系的学生姓名、性别。

SELECT SNAME,SEX
FROM S
WHERE SDEPT IN ('CS','MA','IS')

 

14、查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。

SELECT SNO,GRADE
FROM SC
WHERE CNO = 'C3'
ORDER BY GRADE DESC

 

15、查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。

SELECT *
FROM S
ORDER BY SDEPT ASC,AGE DESC

16、查询学生总人数。

SELECT COUNT(*)
FROM S

17、查询选修了课程的学生人数。

SELECT COUNT(DISTINCT SNO)
FROM SC

18、计算选修了C1课程的学生平均成绩。

SELECT AVG(GRADE)
FROM SC
WHERE CNO = 'C1'

19、查询学习C3课程的学生最高分数。

SELECT MAX(GRADE)
FROM SC
WHERE CNO = 'C3'

20、查询各个课程号与相应的选课人数。

SELECT CNO,COUNT(SNO)
FROM SC
GROUP BY CNO

21、查询计算机系选修了3门以上课程的学生的学号。

SELECT SNO
FROM S,SC
WHERE SDEPT = 'CS' AND S.SNO = SC.SNO
GROUP BY SNO
HAVING COUNT(*)>3

22、求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。

SELECT AGE,COUNT(SNO)
FROM S
GROUP BY AGE
HAVING COUNT(*)>50
ORDER BY COUNT(*) ASC,AGE DESC

23、查询每个学生及其选修课程的情况。

SELECT S.SNO,SNAME,AGE,SEX,SDEPT,CNO,GRADE
FROM S,SC
WHERE S.SNO = SC.SNO

24、查询选修了C2课程且成绩在90分以上的所有学生。

SELECT SNO
FROM SC
WHERE CNO = 'C2' AND GRADE >90

25、查询每个学生选修的课程名及其成绩。

SELECT CNAME,GRADE
FROM SC
GROUP BY SNO

26、统计每一年龄选修课程的学生人数。

SELECT AGE,COUNT(DISTINCT S.SNO)
FROM S,SC
WHERE S.SNO = SC.SNO
GROUP BY AGE

27、查询选修了C2课程的学生姓名。

连接查询

SELECT SNAME
FROM S,SC
WHERE CNO = 'C2' AND S.SNO = SC.SNO

嵌套查询

SELECT SNAME
FROM S
WHERE SNO IN
    (SELECT SNO
     FROM SC
     WHERE CNO = 'C2')

28、查询与“张三”在同一个系学习的学生学号、姓名和系别。

嵌套查询

SELECT SNO,SNAME,SDEPT
FROM S
WHERE SDEPT IN
    (SELECT SDEPT
     FROM S
     WHERE SNAME = '张三')

 自身连接

SELECT SNO,SNAME,SDEPT
FROM S S1, S S2
WHERE S1.SDEPT = S2.SDEPT AND S2.SNAME = '张三'

29、查询选修课程名为“数据库”的学生学号和姓名。

连接查询

SELECT SNO,SNAME
FROM S,SC,C
WHERE CNO = '数据库' AND S.SNO = SC.SNO AND C.CNO = SC.CNO

嵌套查询

SELECT SNO,SNAME
FROM S
WHERE SNO IN
    (SELECT SNO
     FROM SC
     WHERE CNO IN
         (SELECT SNO
          FROM C
          WHERE CNAME = '数据库'))

 

  • 20
    点赞
  • 161
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值