SELECT Sname
FROM Student
WHERE NOT EXISTS
(SELECT * FROM Course WHERE NOT EXISTS  (SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=Course.Cno)
);

EXISTS:查询有结果则返回真值,查询为空则返回false。
NOT EXISTS:查询有结果返回false,查询为空返回true。
Exists执行的流程Exists首先执行外层查询,再执行内存查询,与IN相反。

假设:
课程总共有 语文,数学,英语三门课程。
现在有学生:张三:选修了语文,数学,没有选择英语。李四:三门课全都选修了。开始查询:一、首先从Student表中选出 张三 所在元组(也就是张三所在行),接着依次从Course表取出三门课程,1、首先取出语文课满足"Sno=Student.Sno AND Cno=Course.Cno"条件,即查询到了结果,则第2个NOT EXISTS返回结果false,第1个WHERE收到false,不执行任何操作。2、接着判断数学,同样满足,第一个WHERE不执行任何操作。3、最后拿出英语,"SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=Course.Cno"语句查询不到结果,则第2个NOT EXISTS返回ture,第1个WHERE收到true,则将结果(也就是英语课程)放入结果表,也就是"SELECT * FROM Course"结果不为空, 第一个NOT EXISTS返回false,那么张三就不会被放进第一个查询的结果表,即张三没有被选中。
二、从Student表中选出 李四 所在元组,接着依次从Course表取出三门课程,因为李四三门课全都选修了,取出的三门课都满足"Sno=Student.Sno AND Cno=Course.Cno"条件,即查询到了结果,则第2个NOT EXISTS都返回结果false,第1个WHERE收到false,都不执行任何操作。最后循环结束时,"SELECT * FROM Course"没有任何结果,即没有一门课被加入第二个查询结果表中,结果为空,则第一个NOT EXISTS返回true,所以李四被放进第一个查询的结果表。得到选修全部课程的学生-李四。
主要思想:将“选修了所有课程的学生”转化为“没有一门课程不选修的学生”。查询到该学生存在没有选修的课程,
则该学生不会被放入结果集中。

数据库sql语句查询选修了全部课程的学生姓名。相关推荐

  1. 【SQL】查询选修了全部课程的学生姓名

    R/S   就是找出R中把   S里所有属性值 都包含的那个属性值 查询选修了全部课程的学生姓名: 第一种: 理解为:查询一个人的姓名,这个人不存在课程没选择. 思路: 1.拿出Student表的第一 ...

  2. sql:查询选修了全部课程的学生姓名

    SELECT SnameFROM StudentWHERE NOT EXISTS(SELECT *FROM CourseWHERE NOT EXISTS(SELECT *FROM SCWHERE Sn ...

  3. 【SQL Server】查询选修了全部课程的学生姓名。

    查询选修了全部课程的学生姓名. SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM Course WHERE NOT EXISTS (S ...

  4. SQL查询选修了全部课程的学生姓名解析

    查询选修le全部课程的学生姓名 select sname from student where not exists (select * from course where not exists (s ...

  5. mysql查询学生所选修的全部课程_查询选修了全部课程的学生姓名

    首先头脑中有三点概念: 1 .  EXISTS 子查询找到的提交 NOT EXISTS 子查询中 找不到的提交 说明:不要去翻译为存在和不存在,把脑袋搞晕. 2 . 建立程序循环的概念,这是一个动态的 ...

  6. 查询选修了全部课程的学生姓名

    首先头脑中有三点概念: 1 . EXISTS 子查询找到的提交NOT EXISTS 子查询中 找不到的提交说明:不要去翻译为存在和不存在,把脑袋搞晕. 2 . 建立程序循环的概念,这是一个动态的查询过 ...

  7. 查询选修了全部课程的学生姓名【转】

    SELECT SN FROM S WHERE NOT EXISTS(SELECT *   FROM C   WHERE NOT EXISTS(SELECT *     FROM SC     WHER ...

  8. 查询所有修过java这门课_查询选修了“JAVA”课程的学生姓名和所在的系

    [单选题]设 i 和 x 都是 int 类型,则以下 for 循环( ). for(i=0,x=0;i<=9&&x!=876;i++) scanf("%d", ...

  9. 查询选修了全部课程的学生姓名(帮助理解)

    Student:学生表 Course:课程表 SC:学生选课表 SELECT Sname FROM Student## 第一层子查询WHERE NOT EXISTS(SELECT * FROM Cou ...

最新文章

  1. Linux 安装Anroid Studio 0.8
  2. Scala的四种Web框架
  3. python实现excel筛选功能并输出_python如何实现excel按颜色筛选功能
  4. 语音对话系统的设计要点与多轮对话的重要性
  5. arduino 土壤温湿度传感器_嫌arduino太贵?太大?试试ATTINY85!DIY温湿度计入门级教程...
  6. “全球+”浪潮下,企业出海选择合适的“技术船舶”成关键
  7. 货车交强险在网上能买吗?
  8. T-SQL象数组一样处理字符串、分割字符串
  9. 小程序tabbar能放分包路径吗_微信小程序之如何自定义底部tabbar导航
  10. 如何使用iMazing为iPad创建配置文件
  11. wordpress数据表说明
  12. php+mysql图书管理系统
  13. 网络工程师需要那些技术
  14. 离散数学证明公式整理
  15. svn 统计代码行数
  16. 2019年Java春招汇总,技术类校招社招千道面试题,几百份大厂面经(附答案+考点)...
  17. html中图片旋转木马,教你怎么用CSS3做一个图片的旋转木马效果
  18. 微信 小程序 python 渲染_你用python写过那些好玩的微信小程序?
  19. Mongo第三个参数的用法
  20. 淘宝/天猫盗图投诉之提交盗图申诉材料时,图片过大,如何缩小呢?

热门文章

  1. Android中的Doze模式
  2. 女生最喜欢的情人节礼物,华为nova高清图赏
  3. linux安装r软件教程,Centos6下安装R语言教程
  4. python数字组合算法_python算法-排列组合
  5. 勘误表:《信息论与编码理论(第二版)》,王育民、李晖,高等教育出版社...
  6. python猫咪藏在哪个房间_Python 画猫咪
  7. 01 pyecharts 特性、版本、安装介绍
  8. 从构建进程间缓存设计谈Webpack5 优化和工作原理
  9. python---SSH连接linux服务
  10. pythonturtle循环语句_如何打破Turtle图形Python中的无限循环