打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Mysql中的多表连接问题
问题:有关系S(SNO, SNAME, SDEPT,SAGE),C(CNO, CNAME),SC(SNO, CNO, GRADE)。其中SNO是学生号,SNAME是学生姓名,SDEPT是系别,SAGE是学生年龄, CNO是课程号,CNAME是课程名称,GRADE是成绩。要查询“计算机”系的没有不及格成绩的学生学号和姓名?
A、SELECT Sno, Sname FROM SWHERE Sdept='计算机’
INTERSECT SELECT Sno, Sname FROM SC WHERE GRADE>=60;
B、SELECT Sno, Sname FROM S WHERE Sdept='计算机’and Sno not in (SELECT SNO FROM SC WHERE GRADE<60);
C、SELECT Sno, Sname FROM S WHERE Sdept='计算机’ EXCEPT
SELECT SNO FROM SC WHERE GRADE<60;
D、SELECT Sno, Sname FROM S WHERE Sdept='计算机’and sno in
(SELECT SNO FROM SC WHERE GRADE>=60);
解析:正确答案为B,这是典型的多表连接问题,同时考察了关于in和not in的应用。
知识点1:多表连接
在MySQL中,多表连接是一种非常常见的操作,可以将多个表中的数据进行联合查询。本文将介绍MySQL多表连接的技巧,帮助你更加高效地进行数据查询。
在MySQL中,常用的多表连接有三种:内连接、左连接和右连接。
(1)内连接
内连接是指只有在两个表中都存在匹配的数据时才会返回结果。内连接的语法如下:select 表名1.列名1,表名2.列名1…
from 表名1 [inner] join 表名2 on 表名1.列名1 =表名2.列名1
(2)左连接
左连接是指返回左表中所有的数据,同时将右表中匹配的数据进行连接。左连接的语法如下:
select 表名1.列名1,表名2.列名...1 from 表名1 left join 表名2
on 表名1.列名1 =表名2.列名1
(3)右连接
右连接是指返回右表中所有的数据,同时将左表中匹配的数据进行连接。右连接的语法如下:
select 表名1.列名1,表名2.列名1…from 表名1 right join 表名2
on 表名1.列名1 =表名2.列名1
知识点2:如何把握查询需求“没有不及格成绩的学生学号和姓名”?
这里部分学员选择了D。该选项的where语句中使用“sno in
(SELECT SNO FROM SC WHERE GRADE>=60);”存在漏判。这里只要有学员存在一门课程大于等于60,就会将其SNO筛选出来,即使他存在不及格的科目。
注意B选项:
Sno not in (SELECT SNO FROM SC WHERE GRADE<60);
先找出存在不及格科目的学号,然后限定要查询的学生的学号不在此数据集内。这样满足查询需求:不存在不及格学生。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
数据库笔试题
SQL的简单查询
sql查询语句select 应用举例
SQL查询语句练习题27道
数据库系统教程(何玉洁 李宝安 编著)第5章习题答案
实验四:查询语句练习
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服