- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章子查询报告
第9章 子查询 所谓子查询,是指将一个SELECT查询语句块嵌套在另一个SQL查询语句中。由于子查询是嵌套在其他的SQL查询语句中,所以也称之为嵌套查询。在SQL语句中,子查询需要放在圆括号中,在执行子查询时,其执行的过程是先查询出来子查询的结果,然后将子查询返回的结果作为其外层查询的查询条件。 子查询根据返回的结果,可以分为单行子查询,多行子查询和多列子查询;根据返回的数据与外层查询之间的关系,可以分为相关子查询和不相关子查询。子查询除了应用在查询语句中,还可以应用在表格创建中用来实现数据表之间的复制。应该说,子查询在实际开发过程中有着非常广泛的应用。本章将全面介绍各种子查询的作用以及它们的使用方法。 9.1 单行子查询 在实际应用中,如果开发人员或者是用户明确知道其SQL语句中使用的子查询返回的结果是一行数据时,即子查询中返回的结果是一个值时,就可以使用算术比较运算符进行子查询的操作。其中,比较运算符包括=(等于)、=(大于等于)、=(小于等于)、(大于)、(小于)、!=(不等于)、 (不等于)、!(不大于)、!(不小于)。 9.1 单行子查询 例9.1 查询教师信息表中比赵伟老师工资高的教师信息 SELECT teaID,teaName,age,sex,dept,profession,salary FROM T_teacher WHERE salary (SELECT salary FROM T_teacher WHERE teaName = 赵伟) ORDER BY salary ASC 9.2 多行子查询 所谓多行子查询是指子查询中返回的结果集中含有多行数据。当子查询返回的是多行数据时,需要使用多行运算符。多行运算符包括IN、ANY、ALL等运算符。这一节就来介绍多行运算符IN、ANY、ALL在子查询中的使用方法。 9.2.1 使用IN运算符的子查询 IN运算符在6.1.3小节中已经讲过。使用IN运算符,可以将满足列表中满足指定表达式的任何一个值都查询出来。在子查询中使用IN 运算符,则与子查询中查询出来的结果集中的任何一个值匹配的结果都会被查询出来。因此IN运算符可以用于多行子查询中。 9.2.1 使用IN运算符的子查询 例9.2 查询和教师姓名为毛翠的老师在同一个系的教师信息。 SELECT teaID,teaName,age,sex,dept,profession,salary FROM T_teacher WHERE dept IN (SELECT dept FROM T_teacher WHERE teaName = 毛翠) ORDER BY salary ASC 9.2.1 使用IN运算符的子查询 例9.3 查询和教师姓名为毛翠的老师不在同一个系的教师信息。 SELECT teaID,teaName,age,sex,dept,profession,salary FROM T_teacher WHERE dept NOT IN (SELECT dept FROM T_teacher WHERE teaName = 毛翠) ORDER BY salary ASC 9.2.2 使用ANY运算符的子查询 ANY运算符也用于多行子查询中。ANY运算符的含义是只要与子查询中的任何一个结果值匹配,其值都会被返回。ANY运算符在使用时需要和比较运算符(=(等于)、=(大于等于)、=(小于等于)、(大于)、(小于)、!=(不等于)、 (不等于))放在一起使用。 9.2.2 使用ANY运算符的子查询 9.2.2 使用ANY运算符的子查询 9.2.2 使用ANY运算符的子查询 例9.4 查询其他院系的教师中工资比任意一个数学系教师的工资都高的教师信息。 SELECT teaID,teaName,age,sex,dept,profession,salary FROM T_teacher WHERE salary ANY (SELECT salary FROM T_teacher WHERE dept = 数学系) AND dept != 数学系 ORDER BY salary ASC 9.2.3 使用ALL运算符的子查询 ALL运算符也用于多行子查询中。ALL运算符的含义是与子查询中的所有的结果值匹配时,其值才会被返回。ALL运算符在使用时需要和比较运算符(=(等于)、=(大于等于)、=(小于等于)、(大于)、(小于)、!=(不等于)、 (不等于))放在一起使用。 9.2.3 使用ALL运算符的子查询 9.2.2 使用ANY运算符的子查询 例9.5 查询其他院系的教师中工资比物理系工资最少的教师还低的教师信息。 SELECT teaID,teaName,age,sex
文档评论(0)