【数据库笔记】多表查询提交

某一学生选课系统中有下列三张表:用SQL语言完成下列功能:
这里写图片描述

  1. 找出学过“林红”老师讲授课程的所有学生的学号、姓名、成绩

  2. 找出学全了“林红”老师讲授课程的所有学生的学号、姓名

  3. 找出没学过“林红”老师讲授课程的所有学生的基本信息

  4. 找出没学全“林红”老师讲授课程的所有学生的基本信息

1.找出学过“林红”老师讲授课程的所有学生的学号、姓名、成绩

SELECT S$.Sno,Sname,SC$.Cno,SC$.Grade
  FROM S$,SC$
  WHERE S$.Sno=SC$.Sno AND S$.Sno IN (SELECT SNO
                                      FROM SC$,C$
                                      WHERE SC$.Cno=C$.Cno AND C$.Cteacher='林红')

结果

这里写图片描述

2. 找出学全了“林红”老师讲授课程的所有学生的学号、姓名

SELECT Sno,Sname
FROM  S$
WHERE Sno IN(SELECT S$.Sno
             FROM S$,SC$,C$
             WHERE S$.Sno=SC$.Sno 
             AND SC$.Cno=C$.Cno AND C$.Cteacher='林红' 
             GROUP BY S$.Sno
             HAVING COUNT(*)=(SELECT COUNT(*)
                              FROM C$
                              WHERE Cteacher='林红'))

结果

这里写图片描述

3. 找出没学过“林红”老师讲授课程的所有学生的基本信息

SELECT *
  FROM S$
  WHERE Sno NOT IN (SELECT SNO
                    FROM SC$,C$
                    WHERE SC$.Cno=C$.Cno AND C$.Cteacher='林红')

结果

这里写图片描述

4. 找出没学全“林红”老师讲授课程的所有学生的基本信息

SELECT *
FROM  S$
WHERE Sno IN(SELECT S$.Sno
             FROM S$,SC$,C$
             WHERE S$.Sno=SC$.Sno AND SC$.Cno=C$.Cno AND C$.Cteacher='林红' 
             GROUP BY S$.Sno
             HAVING COUNT(*)>0 AND COUNT(*)<(SELECT COUNT(*)
                                             FROM C$
                                             WHERE Cteacher='林红'))

结果

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值