平时接触的少,写个文章做笔记。

有关系模式如下:

教师关系 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双重否定相关推荐

  1. 关于SQL中not exists的双重否定的一些记录

    作者:kuikui 关于SQL中not exists的双重否定的一些记录 室友在学习数据库时遇到了not exists双重否定的一些问题 在csdn上学习大佬们的理解办法 借此机会回顾一下 eg.表结 ...

  2. SQL的EXISTS双重否定

    NOT EXISTS 我们使用NOT EXISTS语句,最主要也是最困难的一个用法就是双重否定表示肯定. SNO PNO JNO QTY S1 P1 J1 200 S1 P1 J3 100 S1 P1 ...

  3. 你真的了解SQL中的EXISTS谓词吗?

    EXISTS 谓词的用法 支撑 SQL 和关系数据库的基础理论主要有两个:一个是数学领域的集合论,另一个是作为现代逻辑学标准体系的谓词逻辑(predicate logic),准确地说是"一阶 ...

  4. SQL进阶之EXISTS谓词的用法

    SQL进阶之EXISTS谓词的用法 EXISTS谓词的用法 越前须知(雾) 概述 具体用法 查询表中"不存在的数据" 全称量化:肯定 <=> 双重否定 对行.列进行量化 ...

  5. SQL进阶教程——EXISTS谓词的用法(第八章)

    1. 前言 支撑SQL和关系数据库的基础理论主要有两个:一个是数学领域的集合论:另一个是作为现代逻辑学标准体系的谓词逻辑.本节将重点介绍EXISTS谓词,EXISTS不仅可以将多行数据作为整体来表达高 ...

  6. 你真的会玩SQL吗?EXISTS和IN之间的区别

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  7. Master-Detail(主表明细),确认可以出货的SQL指令 -- Not Exists

    这是我文章的备份,原文请看: http://www.dotblogs.com.tw/mis2000lab/archive/2011/08/18/master_detail_finish_and_shi ...

  8. 【MySQL】sql语句中exists和in有何区别?

    1.概述 sql语句中exists和in有何区别? SQL语句优化有哪些方法? sq|语句中exists和in有何区别如下: exists是用循环( loop )的方式,由outer表的记录数决定循环 ...

  9. SQL Server IF Exists 判断数据库对象是否存在的用法

    1 判断数据库是否存在 Sql代码  if exists (select * from sys.databases where name = '数据库名')     drop database [数据 ...

最新文章

  1. 广告域名审核之后跳转技术:点击域名A页面iframe框架下的链接,域名A跳转到域名B...
  2. 安装python的rabbitmq扩展库
  3. 理解VMware虚拟机下网络连接的三种模式
  4. iOS 无限后台运行
  5. 服务器系统自带虚拟机吗,现在所说的服务器虚拟化,也就是在vmware虚拟机上搭建的吗...
  6. 【邀请函】2021钉钉宜搭·线上沙龙,邀您云上相见!
  7. 【安全牛学习笔记】思路、身份认证方法、密码破解方法、字典
  8. linux mysql更改生效_linux下面MySQL变量修改及生效
  9. vbs按钮传递过程_哈希传递攻击仍然是一种威胁
  10. 关于Unity中GrabPass截屏的使用和Shader的组织优化
  11. java vo转map_Java对象与map对象相互转换
  12. sql server高可用_SQL Server 2019常规可用性和安装概述
  13. 编程的一些经历和感想
  14. 健康E生 十八种食品点亮你健康生命
  15. 《R语言数据分析》——导读
  16. 4.10 选择性滤波器
  17. Android开发—智能家居系列-----智能家居原理
  18. 分享11款Steam推理游戏
  19. ECM技术学习:解码端帧内模式推导(Decoder-side Intra Mode Derivation )
  20. Python 安装theano tensorflow keras 教程与pip安装失败解决方法

热门文章

  1. 360是怎样盈利的(整理)
  2. 求职面试之STAR原则
  3. 【永恒之塔私服今天开放了】
  4. anaconda版本查看,老版本下载。
  5. (密码学实验)两种基本古典密码设计与实现—C语言—随机全排列应用
  6. 部署nginx遇到的问题_重定向次数过多或者干脆找不到路径
  7. 彩色图像--色彩空间 HSI(HSL)、HSV(HSB)
  8. 7-42 就不告诉你
  9. 有发现pcb板上的红胶吗?pcb上红胶作用是什么
  10. NutUI 4.0 正式发布!