SQL实用简明教程(课件) 教学课件 作者 7-302-08932-9kCHAP08.ppt

SQL实用简明教程(课件) 教学课件 作者 7-302-08932-9kCHAP08.ppt

ID:50307079

大小:255.00 KB

页数:18页

时间:2020-03-07

SQL实用简明教程(课件) 教学课件 作者 7-302-08932-9kCHAP08.ppt_第1页
SQL实用简明教程(课件) 教学课件 作者 7-302-08932-9kCHAP08.ppt_第2页
SQL实用简明教程(课件) 教学课件 作者 7-302-08932-9kCHAP08.ppt_第3页
SQL实用简明教程(课件) 教学课件 作者 7-302-08932-9kCHAP08.ppt_第4页
SQL实用简明教程(课件) 教学课件 作者 7-302-08932-9kCHAP08.ppt_第5页
资源描述:

《SQL实用简明教程(课件) 教学课件 作者 7-302-08932-9kCHAP08.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第3章创建数据库重点内容:创建数据库和表列约束创建索引修改数据库和表删除数据库和表一、子查询定义子查询(subquery)就是嵌套在另一个查询语句中的SELECT语句,那个外部的查询语句称作为该子查询的外围查询,而这个子查询则称为被嵌套查询。子查询的结果将作为外围查询的参数,这种关系就好像我们的函数调用的嵌套,将一个函数调用作为另一个函数的输入参数。子查询的外围查询可以是多种SQL语句:子查询可以嵌套在另一个SELECT语句的FROM子句、WHERE子句或者是HAVING子句中,它还可以嵌套在INSERT语句、UPDATE语句和DELETE语句中,甚至子查询的外围查询也可以是一个子查询,即

2、嵌套子查询。子查询具有两种不同处理方式的类型:子查询的两种不同处理方式的类型是:相关子查询(correlatedsubquery)和无关子查询(noncorrelatedsubquery)。无关子查询语句的运行和它的外围查询关系密切,而无关子查询运行是不需要和外围查询发生联系。子查询有多种用途:随着子查询返回的数据类型的不同,它的用途也随着发生变化。二、子查询和连接在实际的SQL语句的编写中,需要在多个表的基础上运行一个查询语句的情况也是很常见的。在这两种情况下,可以在查询语句编写中使用表的自连接和连接,也可以使用子查询。一般来说,这两种结构的查询语句的结果是相同的,性能也差不多,选用哪种

3、方式可以依据自己的习惯。当需要使用聚集函数,并将它的值和其它值进行比较时,要使用子查询;当查询的结果要显示多个表的内容时,要使用连接。在其它的子查询和连接可以相互替换的情况下,由于性能相近,使用何种方式就依赖个人的风格习惯了。三、子查询类型1、无关子查询无关子查询是这样的一种查询,它在外围查询之前执行,然后返回数据供外围查询使用,它和外围查询的联系仅此而已。在编写嵌套了子查询的SQL语句时,如果被嵌套的查询中不包含对于外围查询的任何引用,就可以使用无关子查询。编写无关子查询的方式有很多种,最常见的是在IN子句中嵌套。SELECTselect_listFROMtable_name[,tabl

4、e_name,...]WHEREcolumn_nameIN(SELECT[DISTINCT]columnFROMtable_name[WHEREcondition])三、子查询类型2、相关子查询相关子查询和无关子查询的定义是相对的。它是这样的一种查询,在该子查询执行时要使用到外围查询的数据。子查询执行结束后再将它的查询结果返回到它的外围查询中,供外围查询比较使用。SELECTdnoDepartment,nameManagerFROMEmployeeeWHERE0<=ANY(SELECTMONTHS_BETWEEN(mgrstrdate,’2002-01-01’)FROMDepartment

5、WHEREe.id=mgrid)四、子查询的规则使用子查询的限制主要是指对子查询的SELECT列表和子查询中对函数指定的一些限制。(1)由比较运算符或关键字IN引入的内层子查询的SELECT列表中只允许有一项内容,即只能是一个列名或表达式。而且在子查询的SELECT列表中命名的列必须能与在外围语句的WHERE子句中命名的列连接兼容。(2)在使用关键字EXISTS引入的子查询的SELECT列表中不需要指定具体的列名,可以都由星号“*”组成,这是因为这种情况下只需要测试任何一个符合标准的行的存在。或者也可以在子查询的WHERE子句中加入行的限定语句。(3)子查询不能包括ORDERBY子句,因为

6、子查询不需要在内部处理它们的查询结果。但是使用关键字DISTINCT也可以有效地对查询结果进行排序,因为一些系统是通过首先给结果排序来消除复制的。(4)由后面不跟关键字ANY或ALL的比较运算符所引入的子查询除非预先确定了它只能成组返回单个的值,否则不允许使用GROUPBY或HAVING子句。五、返回多个值的子查询1、IN的使用在IN子句中,子查询和手动输入一组数据的区别就在于,我们手动输入时,一般都会输入两个或两个以上的数值,而使用子查询时,不能确定它返回的结果的数量。但是,即使子查询返回的结果为空,语句也能正常运行。SELECTnamemanager,idmgridFROMEmploy

7、eeWHEREidIN(SELECTmgridFROMDepartment)Resultsmanagermgrid———————林志千1001陈广海2001张宇3001张峰4001李志深5001魏成6001[6rows]五、返回多个值的子查询2、NOTIN的使用子查询还可以用在外围查询的NOTIN子句中,以产生NOTIN使用的清单。NOTIN的使用和IN的使用基本一样。如果外围查询中用来比较的记录值被检测出与子查询产生的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。