SQL的NOT EXISTS双重否定
平时接触的少,写个文章做笔记。
有关系模式如下:
教师关系 T(T#,TNAME,TITLE)
课程关系 C(C#,CNAME,T#)
学生关系 S(S#,SNAME,AGE,SEX)
选课关系 SC(S#,C#,SCORE)
题目:检索全部同学都选修的课程的课程号和课程名
SQL:
SELECT DISTINCT C#,CNAME
FROM C
WHERE NOT EXISTS (SELECT *FROM SWHERE NOT EXISTS(SELECT *FROM SCWHERE SC.S#=S.S# AND SC.C#=C.C#) );
解析:
SQL语句的 WHERE (NOT) EXISTS (……)的运行逻辑是:先执行外部查询,然后遍历外部查询的每一个元组(行),将外部查询结果用于内部查询。这点与WHERE ... (NOT) IN 有所不同。
因此在本题的SQL中,其实际含义为:
查询课程表C,然后查询学生表S,执行笛卡尔积(每一个课程表的元组会和每一个学生表的元组进行组合,产生一个 n*m 行的新表),然后所得结果的每个元组执行最里层的查询:如果课程和学生的组合能在选课表SC中找到(即符合题设要求的全部同学都选修的课程),则返回False给中间层的子查询,表示这个查询不符合NOT EXISTS要求。那么在中间层中,从最里层返回False的学生数据就会被改为不存在,这就又是符合最外层NOT EXISTS要求的,会继而返回True给最外层查询,那么这个符合题设要求的数据就经历两次否定最终被找到了。
注意:NOT EXISTS 符合要求返回False,不符合要求返回True
SQL的NOT EXISTS双重否定相关推荐
- 关于SQL中not exists的双重否定的一些记录
作者:kuikui 关于SQL中not exists的双重否定的一些记录 室友在学习数据库时遇到了not exists双重否定的一些问题 在csdn上学习大佬们的理解办法 借此机会回顾一下 eg.表结 ...
- SQL的EXISTS双重否定
NOT EXISTS 我们使用NOT EXISTS语句,最主要也是最困难的一个用法就是双重否定表示肯定. SNO PNO JNO QTY S1 P1 J1 200 S1 P1 J3 100 S1 P1 ...
- 你真的了解SQL中的EXISTS谓词吗?
EXISTS 谓词的用法 支撑 SQL 和关系数据库的基础理论主要有两个:一个是数学领域的集合论,另一个是作为现代逻辑学标准体系的谓词逻辑(predicate logic),准确地说是"一阶 ...
- SQL进阶之EXISTS谓词的用法
SQL进阶之EXISTS谓词的用法 EXISTS谓词的用法 越前须知(雾) 概述 具体用法 查询表中"不存在的数据" 全称量化:肯定 <=> 双重否定 对行.列进行量化 ...
- SQL进阶教程——EXISTS谓词的用法(第八章)
1. 前言 支撑SQL和关系数据库的基础理论主要有两个:一个是数学领域的集合论:另一个是作为现代逻辑学标准体系的谓词逻辑.本节将重点介绍EXISTS谓词,EXISTS不仅可以将多行数据作为整体来表达高 ...
- 你真的会玩SQL吗?EXISTS和IN之间的区别
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- Master-Detail(主表明细),确认可以出货的SQL指令 -- Not Exists
这是我文章的备份,原文请看: http://www.dotblogs.com.tw/mis2000lab/archive/2011/08/18/master_detail_finish_and_shi ...
- 【MySQL】sql语句中exists和in有何区别?
1.概述 sql语句中exists和in有何区别? SQL语句优化有哪些方法? sq|语句中exists和in有何区别如下: exists是用循环( loop )的方式,由outer表的记录数决定循环 ...
- SQL Server IF Exists 判断数据库对象是否存在的用法
1 判断数据库是否存在 Sql代码 if exists (select * from sys.databases where name = '数据库名') drop database [数据 ...
最新文章
- 广告域名审核之后跳转技术:点击域名A页面iframe框架下的链接,域名A跳转到域名B...
- 安装python的rabbitmq扩展库
- 理解VMware虚拟机下网络连接的三种模式
- iOS 无限后台运行
- 服务器系统自带虚拟机吗,现在所说的服务器虚拟化,也就是在vmware虚拟机上搭建的吗...
- 【邀请函】2021钉钉宜搭·线上沙龙,邀您云上相见!
- 【安全牛学习笔记】思路、身份认证方法、密码破解方法、字典
- linux mysql更改生效_linux下面MySQL变量修改及生效
- vbs按钮传递过程_哈希传递攻击仍然是一种威胁
- 关于Unity中GrabPass截屏的使用和Shader的组织优化
- java vo转map_Java对象与map对象相互转换
- sql server高可用_SQL Server 2019常规可用性和安装概述
- 编程的一些经历和感想
- 健康E生 十八种食品点亮你健康生命
- 《R语言数据分析》——导读
- 4.10 选择性滤波器
- Android开发—智能家居系列-----智能家居原理
- 分享11款Steam推理游戏
- ECM技术学习:解码端帧内模式推导(Decoder-side Intra Mode Derivation )
- Python 安装theano tensorflow keras 教程与pip安装失败解决方法