- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3嵌套查询-Read
四、带有EXISTS谓词的子查询 EXISTS代表存在量词]。带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false” ?使用存在量词EXISTS后,若内层查询结果非空,则外层的WHERE子句返回真值,否则返回假值。 ?由EXISTS引出的子查询,其目标列表达式通常都用*,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义 ?子查询的查询条件依赖于外层父查询的某个属性值(在本例中是Student的Sno值),称这类查询为相关于查询(Correlated Subquery)。 ?与EXISTS谓词相对应的是NOTEXISTS谓词。使用存在量词NOTEXISTS后,若内层查询结果为空,则外层的WHERE子句返回真值,否则返回假值。 查询这样的学生,没有一门课程是他不选修的 3.3.4 集合查询 ?SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作。 ?集合操作主要包括并操作UNION、交操作INTERSECT和 差操作MINUS。 * * 四、使用集函数 ?如果指定DISTINCT短语,则表示在计算时要取消指定列中的重复值。 ?如果不指定DISTINCT短语或指定ALL短语(ALL为缺省值),则表示不取消重复值。 五、对查询结果分组 GROUP BY子句将查询结果表按某一列或多列值分组,值相等的为一组. 先用GROUP BY子句按Sno进行分组,再用集函数COUNT对每一组计数。HAVING短语指定选择组的条件,只有满足条件(即元组个数3,表示此学生选修的课超过3门)的组才会被选出来。 WHERE子句与HAVING短语的区别: WHERE子句作用于基本表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。 3.3.2 连接查询 ?若一个查询同时涉及两个以上的表,则称之为连接查询。 ?连接查询包括:等值连接、自然连接、非等值连接查询、自身连接查询、外连接查询和复合条件连接查询。 一、等值与非等值连接查询 ?连接查询中用来连接两个表的条件称为连接条件或连接谓词, ?格式: [表名1.]列名1 比较运算符 [表名2.]列名2 其中比较运算符主要有:=、、、=、=、!=。 ?连接谓词还可以使用下面形式: [表名1.]列名1BETWEEN[表名2.]列名2AND[表名2.]列名3 ?当连接运算符为=时,称为等值连接。使用其他运算符称为非等值连接。 ?连接谓词中的列名称为连接字段。 二、自身连接 一个表与其自己进行连接,称为表的自身连接。 三、外连接 外连接的表示方法:在连接谓词的某一边加符号*,外连接就好象是为符号*所在边的表(本例是SC表)增加一个“万能”的行,行全部由空值组成。 如果外连接符出现在连接条件的右边,称其为右外连接(如本例)。如果外连接符出现在连接条件的左边,则称为左外连接。 四、复合条件连接 WHERE子句中可以有多个连接条件,称为复合条件连接。 连接操作除了可以是两表连接,一个表与其自身连接外,还可以是两个以上的表进行连接,后者通常称为多表连接。 3.3.3 嵌套查询 在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。 将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。 外层查询或父查询 内层查询或子查询 ?SQL语言允许多层嵌套查询。即一个子查询中还可以嵌套 其他子查询。 ?子查询的SELECT语句中不能使用ORDER BY子句,ORDERBY子句只能对最终查询结果排序。 ?嵌套查询一般的求解方法是由里向外处理。 一、带有in谓词的子查询 子查询的查询条件不依赖于父查询,这类子查询称为不相关子查询。 二、带有比较运算符的子查询 例37中,由于一个学生只可能在一个系学习,也就是说内查询的结果是一个值,因此可以用=代替in,其SQL语句如下: 三、带有ANY或ALL谓词的子查询 子查询返回单值时可以用比较运算符,而使用ANY或ALL谓词时则必须同时使用比较运算符。其语义为: ANY 大于子查询结果中的某个值 ALL 大于子查询结果中的所有值 ANY 小于子查询结果中的某个值 ALL 小于子查询结果中的所有值 =ANY 大于等于子查询结果中的某个值 ---ALL 大于等于子查询结果中的所有值 =ANY 小于等于子查询结果中的某个值 =ALL 小于等于子查询结果中的所有值 =ANY 等于子查询结果中的某个值 ; =ALL ’ 等于子查询结果中的所有值(通常没有实际意义) !=(或)ANY 不等于子查询结果中的某个值
原创力文档


文档评论(0)