- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 子查询和高级查询 连接查询 基本含义同时涉及多个表的查询称为连接查询 用来连接两个表的条件称为连接条件或连接谓词一般格式: 比较运算符:=、、、=、=、!= 连接字段连接谓词中的列名称为连接字段连接条件中的各连接字段类型必须是可比的,但不必是相同的 连接查询 SQL中连接查询的主要类型 广义笛卡尔积 等值连接(含自然连接) 非等值连接查询 自身连接查询 外连接查询 复合条件连接查询 连接查询 广义笛卡尔积不带连接谓词的连接,很少使用 连接查询 等值连接连接运算符为 = 的连接操作任何子句中引用表1和表2中同名属性时,都必须加表名前缀。引用唯一属性名时可以加也可以省略表名前缀。 例:查询每个员工及其所在部门的情况。 连接查询 自然连接等值连接的一种特殊情况,把目标列中重复的属性列去掉。例:查询每个员工及其所在部门的情况。 连接查询 非等值连接连接运算符 不是 = 的连接操作比较运算符:、、=、=、!= 例:查询每个员工编号,姓名,工作,工资及其工资等级。 连接查询 自身连接一个表与其自己进行连接,称为表的自身连接 需要给表起别名以示区别 由于所有属性名都是同名属性,因此必须使用别名前缀 例:查询雇员的姓名及其经理的姓名. 练一练 现要求创建一张国家表,表里有一个字段名为”国家名称”,内容如下: 国家名称 中国 美国 巴西 荷兰 要求通过查询实现对战列表. 例:查询每个雇员的姓名,工作,所在部门名称和其直接上级领导的姓名。 练一练 查询每个雇员的姓名,工资,部门名称,工资在公司的等级,以及其领导的姓名,领导的工资等级. 连接查询 外连接(左连接右连接) 外连接与普通连接的区别 普通连接操作只输出满足连接条件的元组 外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出 例:查询每个雇员及其所在部门的情况,如果部门中没有员工该部门的信息也要输出。 例:查询所有雇员的姓名及其领导的姓名。 连接查询 交叉连接(cross JOIN) 连接查询 自然连接(NATURAL JOIN) 自动进行关联字段的匹配 连接查询 USING在满足以下限制时可以使用USING子句对连接条件进行简化 查询必须是等连接的 等连接中的列必须是同名 连接查询 ON用于自定义连接条件 连接查询 Left|Right outer join 用于实现左、右连接 嵌套查询(子查询) 基本含义 一个SELECT-FROM-WHERE语句称为一个查询块 将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询 嵌套查询(子查询) 带有比较运算符的子查询:当能确切知道内层查询返回单值时,可用比较运算符(,,=,=,=,!=或 )。 可与ANY或ALL谓词配合使用 否则应使用IN运算符 嵌套查询(子查询) 例:查询比员工7654工资高的员工信息。 子查询的限制:不能使用ORDER BY子句 必须在括号中书写 子查询的分类 单列子查询:返回的结果是一列的内容,出现几率最高。 单行子查询:返回多个列的值,有可能是一条记录。 多行子查询:返回多条记录,一般作为表使用。 单列子查询 例:查询出工资比7654高同时与7788从事相同工作的全部雇员信息。 单列子查询 例:查询出工资最低的雇员姓名、工作、工资。 练一练 查询公司中挣钱最多的员工的姓名和工资。 多行子查询 思考:查询部门名称,部门的员工数,部门的平均工资以及部门的最低收入的雇员的姓名。要求按照部门编号分组。 练一练 显示高于自己部门平均工资的员工信息。 Select * from emp e,(select deptno,avg(sal) a from emp group by deptno) ed where e.deptno = ed.deptno and e.sal ed.a; 嵌套查询(子查询) 带有ANY或ALL谓词的子查询 ANY:任意一个值 ALL:所有值 配合使用比较运算符的含义 ANY 大于子查询结果中的某个值 ALL 大于子查询结果中的所有值 ANY 小于子查询结果中的某个值 ALL 小于子查询结果中的所有值 = ANY 大于等于子查询结果中的某个值 = ALL 大于等于子查询结果中的所有值 = ANY 小于等于子查询结果中的某个值 = ALL 小于等于子查询结果中的所有值 = ANY 等于子查询结果中的某个值 嵌套查询(子查询) 带有ANY或ALL谓词的子查询例
文档评论(0)