如何理解exists sql

原创 2007年10月10日 12:00:00

  s(s#,sname,age,sex)  
  sc(s#,c#,grade)  
  c(c#,cname,teacher)  
  select   sname   from   s   where   not   exists   (  
  select   *   from   c   where   not   exists(  
  select   *   from   sc   where   sc.s#=s.s#   and   sc.c#=c.c#)   )

 

exists是用来判断是否存在的,当exists(查询)中的查询存在结果时则返回真,否则返回假。not exists则相反。

exists做为where 条件时,是先对where 前的主查询询进行查询,然后用主查询的结果一个一个的代入exists的查询进行判断,如果为真则输出当前这一条主查询的结果,否则不输出。

上面这个列子,先查询出s表的结果,然后将结果代入到s.s#,然后再查询出c表中的结果,再一条一条的代入,感觉有点像for的嵌套循环,第一轮外循环中,满足内部的not exists条件的c表中的结果集被保留,然后再判断外部的not exists,这次判断是根据内部C表中被保留的结果集的情况,如果结果集为空,则输出当前这一条S表的结果集;然后再进行第二轮大的循环,即取出s表的第二条结果代入运算。

以上的sql还可以这样理解,最内部的  select   *   from   sc   where   sc.s#=s.s#   and   sc.c#=c.c#是查询出所有已经选择过课程的学生及相应课程,  select   *   from   c   where   not   exists则是所有没有被选择的课程,在这个基础上的  select   sname   from   s   where   not   exists 则是选取所有没有未选择课程的学生,即选择了所有课程的学员名称。

SQL中EXISTS自己的一些用法和理解。

EXISTS 是判断是否存在,和in类似,但效率要比in高
  • zlhxiaohui
  • zlhxiaohui
  • 2014年10月11日 19:45
  • 1137

SQL语句中exists/not exists的用法分析

1、Student: Sno Sname Ssex Sage Sdept 200215121 李勇 男 20 CS 200215122 刘晨...
  • wozengcong
  • wozengcong
  • 2015年05月18日 13:20
  • 20855

数据库NOT EXISTS的理解

数据库有查询有四种运算:选择、投影、连接、除运算;而NOT EXISTS关键字则是基于除运算的查询。 例如: SC表(Sno是学生号,Cno是课程号) +-----------+--...
  • Jammg
  • Jammg
  • 2016年04月08日 17:39
  • 1257

【SQL】IN、EXISTS和表连接三者的效率比较

一、 IN和EXISTS比较 在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行查询。此时就会用到IN和EXISTS。 例如:查询departments表中存在的部门的人数。 1、 ...
  • NextAction
  • NextAction
  • 2017年04月27日 14:00
  • 1535

SQL中exists关键字的用法

exists用于检查一个子查询是否至少会返回一行数据(即检测行的存在),返回值为true或false。     语法: exists subquery     参数: subquery 是一个受限的 ...
  • wangshuxuncom
  • wangshuxuncom
  • 2013年11月05日 17:11
  • 8530

SQL中IN和EXISTS用法的区别,sql中exists,not exists的用法

NOT IN SELECT DISTINCT MD001 FROM BOMMD WHERE MD001 NOT IN (SELECT MC001 FROM BOMMC) NOT EXISTS,ex...
  • wozengcong
  • wozengcong
  • 2015年05月18日 09:28
  • 5896

sql语句中exists和in用法的区分

初学java两个多月,这两天在整理老师的笔记对数据库中的exists和in的用法分不清楚,从网上搜了些资料,作了点总结。 一、问题起因 起初是由两条语句执行结果不同,语句如下: --分析以下结果...
  • U___U
  • U___U
  • 2015年03月27日 15:25
  • 4260

数据库sql语句的exists总结

数据库sql语句的exists总结 sql exists in 学习   先来比较下语法: --deals=交易表,areas=地域表,例如香港;我们的目的:查看有交易的地域 ...
  • u010408365
  • u010408365
  • 2015年05月08日 14:50
  • 1691

SQL中关于EXISTS谓词的理解

在SQL语言中,EXISTS(存在)谓词是一个非常重要的查询关键词。 让我们先看看EXISTS的用法:EXISTS代表存在量词。带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”...
  • qq_19782019
  • qq_19782019
  • 2017年12月06日 15:35
  • 70

SQL——select语句的三种基本用法:连接,嵌套,exists

use testSQL create table T--教师关系表 ( T# char(10) , Tname char(10), Title char(10), primary key(...
  • ShuiTianNaiLuo
  • ShuiTianNaiLuo
  • 2014年09月17日 17:04
  • 603
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何理解exists sql
举报原因:
原因补充:

(最多只允许输入30个字)