ITPub博客

首页 > Linux操作系统 > Linux操作系统 > exists子句在Sql中的含义

exists子句在Sql中的含义

原创 Linux操作系统 作者:ljm0211 时间:2012-06-20 13:03:27 0 删除 编辑
      带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。
      使用存在量词EXISTS后,若内层查询结果非空,则外层的WHERE子句返回真值否则返回假值。
      由EXISTS引出的子查询,其目标列表达式通常都用*,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义。
      这类查询与前面讲解得不相关子查询有一个明显的区别,即子查询的查询条件依赖于外层父查询的某个属性值,称这类查询为相关子查询。求解相关子查询不能像求解不相关子查询那样,一次将子查询求解出来,然后求解父查询。内层查询由于与外层查询有关,因此必须反复求值。从概念上讲,相关查询的一般处理过程是:
      首先去外层查询中表的第1个元组,根据它与内层查询相关的属性值处理内层查询,若WHERE子句返回值为真,则取此元组放入结果表;然后再取表的下一个元组;重复这个过程直到外层表全部检查完为止。
      相对来讲,in子句通常用在不相关子查询中。通常先执行子查询,将子查询的结构用于父查询。子查询的查询条件不依赖于父查询,这类子查询称为不相关子查询
exists子句例子:SELECT Sname
                          FROM Student
                          WHERE EXISTS
                                       (SELECT *
                                         FROM SC
                                        WHERE Sno=Student.Sno AND Cno='1');
in子句例子:SELECT Sno,Sname,Sdept
           FROM Student
           WHERE Sdept IN
                (SELECT Sdept
                 FROM Student
                 WHERE Sname='');

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11411056/viewspace-733344/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-14

  • 博文量
    272
  • 访问量
    436865