下载此文档

子查询.ppt


文档分类:IT计算机 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
子查询
重点内容:
创建数据库和表
列约束
创建索引
修改数据库和表
删除数据库和表
一、子查询定义
子查询(subquery)就是嵌套在另一个查询语句中的SELECT语句,那个外部的查询语句称作为该子查询的外围查询,而这个子查询则称为被嵌套查询。子查询的结果将作为外围查询的参数,这种关系就好像我们的函数调用的嵌套,将一个函数调用作为另一个函数的输入参数。
子查询的外围查询可以是多种SQL语句:子查询可以嵌套在另一个SELECT语句的FROM子句、WHERE子句或者是HAVING子句中,它还可以嵌套在INSERT语句、UPDATE语句和DELETE语句中,甚至子查询的外围查询也可以是一个子查询,即嵌套子查询。
子查询具有两种不同处理方式的类型:子查询的两种不同处理方式的类型是:相关子查询(correlated subquery)和无关子查询(noncorrelated subquery)。无关子查询语句的运行和它的外围查询关系密切,而无关子查询运行是不需要和外围查询发生联系。
子查询有多种用途:随着子查询返回的数据类型的不同,它的用途也随着发生变化。
二、子查询和连接
在实际的SQL语句的编写中,需要在多个表的基础上运行一个查询语句的情况也是很常见的。在这两种情况下,可以在查询语句编写中使用表的自连接和连接,也可以使用子查询。一般来说,这两种结构的查询语句的结果是相同的,性能也差不多,选用哪种方式可以依据自己的习惯。
当需要使用聚集函数,并将它的值和其它值进行比较时,要使用子查询;当查询的结果要显示多个表的内容时,要使用连接。在其它的子查询和连接可以相互替换的情况下,由于性能相近,使用何种方式就依赖个人的风格习惯了。
三、子查询类型
1、无关子查询
无关子查询是这样的一种查询,它在外围查询之前执行,然后返回数据供外围查询使用,它和外围查询的联系仅此而已。在编写嵌套了子查询的SQL语句时,如果被嵌套的查询中不包含对于外围查询的任何引用,就可以使用无关子查询。编写无关子查询的方式有很多种,最常见的是在IN子句中嵌套。
SELECT select_list
FROM table_name[, table_name, ...]
WHERE column_name IN
(SELECT [DISTINCT] column
FROM table_name
[WHERE condition])
三、子查询类型
2、相关子查询
相关子查询和无关子查询的定义是相对的。它是这样的一种查询,在该子查询执行时要使用到外围查询的数据。子查询执行结束后再将它的查询结果返回到它的外围查询中,供外围查询比较使用。
SELECT dno Department, name Manager
FROM Employee e
WHERE 0 <= ANY
(SELECT MONTHS_BETWEEN(mgrstrdate, ’2002-01-01’)
FROM Department
WHERE = mgrid)
四、子查询的规则
使用子查询的限制主要是指对子查询的SELECT列表和子查询中对函数指定的一些限制。
(1)由比较运算符或关键字IN引入的内层子查询的SELECT列表中只允许有一项内容,即只能是一个列名或表达式。而且在子查询的SELECT列表中命名的列必须能与在外围语句的WHERE子句中命名的列连接兼容。
(2)在使用关键字EXISTS引入的子查询的SELECT列表中不需要指定具体的列名,可以都由星号“*”组成,这是因为这种情况下只需要测试任何一个符合标准的行的存在。或者也可以在子查询的WHERE子句中加入行的限定语句。
(3)子查询不能包括ORDER BY子句,因为子查询不需要在内部处理它们的查询结果。但是使用关键字DISTINCT也可以有效地对查询结果进行排序,因为一些系统是通过首先给结果排序来消除复制的。
(4)由后面不跟关键字ANY或ALL的比较运算符所引入的子查询除非预先确定了它只能成组返回单个的值,否则不允许使用GROUP BY或HAVING子句。
五、返回多个值的子查询
1、IN的使用
在IN子句中,子查询和手动输入一组数据的区别就在于,我们手动输入时,一般都会输入两个或两个以上的数值,而使用子查询时,不能确定它返回的结果的数量。但是,即使子查询返回的结果为空,语句也能正常运行。
SELECT name manager, id mgrid
FROM Employee
WHERE id IN
(SELECT mgrid
FROM Department)
Results
manager mgrid
———————
林志千 1001
陈广海 2001
张宇 3001
张峰 4001

子查询 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人fxl8
  • 文件大小0 KB
  • 时间2014-04-17
最近更新