2021-11-04数据库中关于两层套用 not exists实现全称量词查询
在刚开始学习数据库时会遇到如何理解两层嵌套 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实现全称量词查询相关推荐
- 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...
java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码) 发布于 2020-7-22| 复制链接 本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库 ...
- 如何判断数据库中的两个表是否相同(相等)?比较数据库中的两个表是否完全相同,包括字段和每条记录
如何判断数据库中的两个表是否相同(相等)?比较数据库中的两个表是否完全相同,包括字段和每条记录 目录
- 如何在JAVA编程语言程序开发中更好的利用数据库中2两张表?
数据库中2两张表 一张user表,一张pay表 department的外键在user表中做主键 则:用eclipse的自动翻转工具生成的配置文件如下 <?xml version="1. ...
- mysql gps数据查询_Mysql数据库中计算两GPS坐标的距离
Mysql数据库中计算两GPS坐标的距离有两种方式: 1.直接使用SQL语句:#lat为纬度, lng为经度, 一定不要弄错 declare @lng1 float; declare @lat1 fl ...
- Mybatis中mapper文件中的两层循环
导言 使用mapper.xml文件来存储和执行sql语句是Mybatis框架中重要的应用.在mapper.xml文件中对List数据的循环遍历较为普遍和常用,而两层或多层循环是大家不常用的.下面简单介 ...
- 详解PostgreSQL数据库中的两阶段锁
点击上方"蓝字" 关注我们,享更多干货! 数据库中的对象是共享的,假如不同的用户同时修改某个对象,就会出现数据错乱,从而破坏数据库的数据一致性,违反事务的隔离性原则. 为了满足隔离 ...
- 数据库三级模式两层映射
为什么会有三级模式?这里的话先解释一些这个东西,ANSI为了规范我们对数据库的使用,ANSI的数据库管理系统研究小组于1978年提出了标准化的建议,将数据库结构分为3级:面向用户或应用程序员的用户级. ...
- mysql查询最新插入的一条_我刚数据库中插入一条记录,紧接着再去查询却查不到?...
向数据库 中奖记录表中 添加一条中奖 记录,马上调用方法查询这条记录, 查询不到! 我打开数据库查看 数据是插入成功的. 开发语言是用java, 框架 hibernate! 插入数据,和查询数据代码如 ...
- python将数据存入mysql数据库中_python3 两种方法将数据存入mysql数据库
方法一:(数据量小的时候推荐使用这种) 第一步:pip install mysqlclient 这里我没有报错 也许你可能会报错Read timed out 此时不要慌,这是因为你的网络问题,你使 ...
最新文章
- 55 前端构建工具Gulp
- hbase1.1.1 连接集群_除了HAProxy,RabbitMQ集群还可以这样用
- 学习IT技术你需要的是书?视频教程?还是老师?
- python not instance_python isinstance 判断各种类型的小细节|python3教程|python入门|python教程...
- Linux fedora35安装crontab定时任务工具
- boost::gil::derived_view_type用法的测试程序
- android strm,Android 关于so文件的随记
- 每日一题(49)—— 有符号数与无符号数
- 马云:希望下辈子能做个好女人,男人离开女人“啥都不是”
- python常用包有哪些品牌_python 常用包总结
- 如果查看oracle_home是否共享_现在还有小伙伴用XP系统吗?经常会共享打印问题...
- 使用Cmder替换cmd,让你的开发飞起来
- php中 不等运算符是,PHP中,不等运算符是
- android sqlite 随机,Android+Sqlite 实现内容的随机内容推送(一)
- 《强化学习周刊》第3期:深度强化学习如何提升鲁棒性和性能
- Linux debian安装DBeaver连接MySQL8、导入和导出数据库详细教程
- DS栈—波兰式,逆波兰式
- 中点画线完整算法c语言,中点画线算法
- Servlet - Java Web Core Component
- 虚函数和纯虚函数及虚函数表
热门文章
- 初一年级上学期计算机课知识总结,初中一年级计算机课总结
- win8 破解myeclipse10.x
- 中西点专业还是计算机专业好,技校学什么专业好找工作
- 浏览器的排行榜及详细介绍
- 功能规格说明书V1.0
- 各地的磁倾角_磁偏角的中国各地磁偏角
- html制作服装推广软文,服装推广软文应该怎么写才能实现销售产品的目的?
- 优云automation轻松“一点”,搞定裸机安装系统
- 天命数 描述 给定两个数字n与m(n,m均不为0,均在100,000以内), 天命数规则如下:给出一个特殊的数字k,1<=k<=3,当k=1的时候,天命数就是n,m中较大的数字整除较小的数字所得到的
- 如何对手机网页底部悬浮广告代码做翻转效果,这样做就好了