您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

mysql学习笔记:not exists实现除法运算

bubuko 2022/1/25 20:06:10 mysql 字数 27829 阅读 875 来源 http://www.bubuko.com/infolist-5-1.html

除法运算诚然是难点,但是它的几种经典的题型是比较固定的,今天先去粗略的整理一下! 前言:我发现一个规律,就是SQL语言对于包含”所有“这类需要用到除法的查询语句时,小集合B就是查询语句中从开头到“所有”(有些题则是全部2333)修饰的名词,尤其是这个“所有”修饰的名词基本就是B集合了,基本上这个规律 ...

除法运算诚然是难点,但是它的几种经典的题型是比较固定的,今天先去粗略的整理一下!

前言:我发现一个规律,就是SQL语言对于包含”所有“这类需要用到除法的查询语句时,小集合B就是查询语句中从开头到“所有”(有些题则是全部2333)修饰的名词,尤其是这个“所有”修饰的名词基本就是B集合了,基本上这个规律百试不爽!查询语句由左到右自然对下来,集合B,A由左到右,从小到大,自然显现,准确灵活应用之,冲鸭,龙龙!2333!

活动的表格如下:

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

1.一道很经典的题目:查询至少选修了学号为1的学生选修的全部(所有的)课程的学生学号。(这是一个意味深长的定语修饰哦!)

 

相关辅助资料:

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

 

 

秀出我的代码2333:基本上目前就是如下的形式

 

 

/*查询至少选修1号学生选修的所有课程的学生学号*/
select sno from student where not exists
(select * from sc as sc1 where sc1.sno=1 and not exists
(select * from sc as sc2 where sc2.sno=student.sno and sc2.cno=sc1.cno));

 

 

 

 

 

 

 

技术分享图片

 

 

其他的一些相关训练

技术分享图片

 

 

 

/*查询至少选修了学号是2号的学生所选修的全部课程的学生学号*/
select distinct sno from sc as x
where not exists
(select * from sc as y
where sno=‘2‘ and not exists
(select * from sc
where sno=x.sno and cno=y.cno)); 

 

  技术分享图片

 

 

2.接下来看一下两道很相像的题目:

(1)查询选修了全部课程的学生姓名。

(2)求被所有的学生都选修了的课程名。

 

(1)

/*查询选修了全部课程的学生姓名。*/
select sname from student where not exists
(select * from c where not exists
(select * from sc where sno=student.sno and cno=c.cno)); 

技术分享图片

 

 

参考:

技术分享图片

 

 

(2)

 

 

/*求被所有的学生都选修了的课程名*/
select cname from c where not exists
(select * from student where not exists
(select * from sc where sc.sno=student.sno and sc.cno=c.cno));

 

  技术分享图片

 

 

参考:

 

技术分享图片

 

 

 

 

3.查询全部学生都选修的课程的课程号与课程名。

 

 

/*查询全部学生都选修的课程的课程号与课程名*/
select cno,cname from c where not exists
(select * from student where not exists
(select * from sc where sc.sno=student.sno and sc.cno=c.cno));

 

  技术分享图片

 

参考:

技术分享图片

 

 

 

 

 

 

5.接下来回归一下理论基础的介绍2333!

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

大集合包含小集合。小集合在前,大集合在后,写sql的时候.

 

“查询全部学生都选修的课程的课程号与课程名。”中,小集合B是:全部学生,大集合A是选修某门课程的学生集合;

 

“查询选修过全部课程的学生的学号和姓名”中,小集合B是:全部课程,大集合A是某个学生的选课集合。

 

“查询至少选修了学号为1的学生选修的全部(所有的)课程的学生学号。”中,小集合B是:学号为1的学生选修的全部课程,

 

大集合A是:某个学生选修的课程集合。

 

我发现一个规律,就是SQL语言对于包含”所有“这类需要用到除法的查询语句时,小集合B就是查询语句中从开头到“所有”(有些题则是全部2333)修饰的名词,基本上这个规律百试不爽!查询语句由左到右自然对下来,集合B,A由左到右,从小到大,自然显现,准确灵活应用之,冲鸭,龙龙!2333!

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

 

 

先总结到这儿,多多实践熟练之,冲鸭,龙龙!

 

mysql学习笔记:not exists实现除法运算

原文:https://www.cnblogs.com/dragondragon/p/12470013.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶