在刚开始学习数据库时会遇到如何理解两层嵌套 not exists 实现全称量词的查询的理解。

例如:

Student : Sno (学号)  Sname(姓名)  Ssex(性别) Sage(年龄) Sdept(系)

Course :Cno(课程号) Cname(课程名) Cpno(先行课) Ccredit(学分)

SC        :Sno(学号) Cno(课程号) Grade(成绩)

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

Select Sname
From Student
Where not exists(select *From Course Where not exists(select *From SCWhere Sno =Student.Sno AND Cno = Course.Cno));

我们首先从Student中拿出来一个学生,进入Where的第一层 not exists 中:

作用:可以在Course中查到对应课程的课程号。将课程号循环传递给第二层 not exists 中。

进入第二层 not exists 循环

作用:先是将第一层查询的课程号 和 Student的姓名对应起来,然后看能否在SC中查询到

以上是废话:

重点来了:第一层Course中的每门课程都能在 第二层SC中查询到则

  where not exists返回0,(not exists语句查询结果为空,返回真直;查询不为空,返回假值)。

第二层返回是0,则第一层由于第二层返回为空及第一层中的查询结果为0(空),所以上图中的Where not exists 返回1。意思是这位同学所有课程已修。

 

例如 : 拿出Student中的张三,此时查询语句运行到:

From Student

查询语句进入循环:

Where not exists
    (select *
     From Course

这是已经查到课程号 1 ,继续查询

Where not exists
        (select *
         From SC
         Where Sno =Student.Sno AND Cno = Course.Cno)

这个时候张三 和 课程号 1 联系起来,在SC中查询。如果查到课程 1 返回 0 给上一层。

然后查询课程号 2 如此往复。直到所有课程都返回为 0 则第一层返回为1 。这位同学的所有课程都

修读完成。否则如果第二层循环有一个没有查询到在 not exists作用下返回 1 ,导致第一层返回

0;则这位同学有课程没有修读完成。


以上就是整个过程啦啦啦啦啦啦

2021-11-04数据库中关于两层套用 not exists实现全称量词查询相关推荐

  1. 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...

    java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码) 发布于 2020-7-22| 复制链接 本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库 ...

  2. 如何判断数据库中的两个表是否相同(相等)?比较数据库中的两个表是否完全相同,包括字段和每条记录

    如何判断数据库中的两个表是否相同(相等)?比较数据库中的两个表是否完全相同,包括字段和每条记录 目录

  3. 如何在JAVA编程语言程序开发中更好的利用数据库中2两张表?

    数据库中2两张表 一张user表,一张pay表 department的外键在user表中做主键 则:用eclipse的自动翻转工具生成的配置文件如下 <?xml version="1. ...

  4. mysql gps数据查询_Mysql数据库中计算两GPS坐标的距离

    Mysql数据库中计算两GPS坐标的距离有两种方式: 1.直接使用SQL语句:#lat为纬度, lng为经度, 一定不要弄错 declare @lng1 float; declare @lat1 fl ...

  5. Mybatis中mapper文件中的两层循环

    导言 使用mapper.xml文件来存储和执行sql语句是Mybatis框架中重要的应用.在mapper.xml文件中对List数据的循环遍历较为普遍和常用,而两层或多层循环是大家不常用的.下面简单介 ...

  6. 详解PostgreSQL数据库中的两阶段锁

    点击上方"蓝字" 关注我们,享更多干货! 数据库中的对象是共享的,假如不同的用户同时修改某个对象,就会出现数据错乱,从而破坏数据库的数据一致性,违反事务的隔离性原则. 为了满足隔离 ...

  7. 数据库三级模式两层映射

    为什么会有三级模式?这里的话先解释一些这个东西,ANSI为了规范我们对数据库的使用,ANSI的数据库管理系统研究小组于1978年提出了标准化的建议,将数据库结构分为3级:面向用户或应用程序员的用户级. ...

  8. mysql查询最新插入的一条_我刚数据库中插入一条记录,紧接着再去查询却查不到?...

    向数据库 中奖记录表中 添加一条中奖 记录,马上调用方法查询这条记录, 查询不到! 我打开数据库查看 数据是插入成功的. 开发语言是用java, 框架 hibernate! 插入数据,和查询数据代码如 ...

  9. python将数据存入mysql数据库中_python3 两种方法将数据存入mysql数据库

    方法一:(数据量小的时候推荐使用这种) 第一步:pip install mysqlclient 这里我没有报错 也许你可能会报错Read timed out   此时不要慌,这是因为你的网络问题,你使 ...

最新文章

  1. 55 前端构建工具Gulp
  2. hbase1.1.1 连接集群_除了HAProxy,RabbitMQ集群还可以这样用
  3. 学习IT技术你需要的是书?视频教程?还是老师?
  4. python not instance_python isinstance 判断各种类型的小细节|python3教程|python入门|python教程...
  5. Linux fedora35安装crontab定时任务工具
  6. boost::gil::derived_view_type用法的测试程序
  7. android strm,Android 关于so文件的随记
  8. 每日一题(49)—— 有符号数与无符号数
  9. 马云:希望下辈子能做个好女人,男人离开女人“啥都不是”
  10. python常用包有哪些品牌_python 常用包总结
  11. 如果查看oracle_home是否共享_现在还有小伙伴用XP系统吗?经常会共享打印问题...
  12. 使用Cmder替换cmd,让你的开发飞起来
  13. php中 不等运算符是,PHP中,不等运算符是
  14. android sqlite 随机,Android+Sqlite 实现内容的随机内容推送(一)
  15. 《强化学习周刊》第3期:深度强化学习如何提升鲁棒性和性能
  16. Linux debian安装DBeaver连接MySQL8、导入和导出数据库详细教程
  17. DS栈—波兰式,逆波兰式
  18. 中点画线完整算法c语言,中点画线算法
  19. Servlet - Java Web Core Component
  20. 虚函数和纯虚函数及虚函数表

热门文章

  1. 初一年级上学期计算机课知识总结,初中一年级计算机课总结
  2. win8 破解myeclipse10.x
  3. 中西点专业还是计算机专业好,技校学什么专业好找工作
  4. 浏览器的排行榜及详细介绍
  5. 功能规格说明书V1.0
  6. 各地的磁倾角_磁偏角的中国各地磁偏角
  7. html制作服装推广软文,服装推广软文应该怎么写才能实现销售产品的目的?
  8. 优云automation轻松“一点”,搞定裸机安装系统
  9. 天命数 描述 给定两个数字n与m(n,m均不为0,均在100,000以内), 天命数规则如下:给出一个特殊的数字k,1<=k<=3,当k=1的时候,天命数就是n,m中较大的数字整除较小的数字所得到的
  10. 如何对手机网页底部悬浮广告代码做翻转效果,这样做就好了