用SQL进行嵌套查询

2016-02-19 17:37 7 1 收藏

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的用SQL进行嵌套查询懂设计的网友们快点来了解吧!

【 tulaoshi.com - 编程语言 】

  在select查询语句里可以嵌入select查询语句,称为嵌套查询。有些书上将内嵌的select语句称为子查询,子查询形成的结果又成为父查询的条件。

  子查询可以嵌套多层,子查询操作的数据表可以是父查询不操作的数据表。子查询中不能有order by分组语句。

  4.4.1 简单嵌套查询

  在执行下列语句。

  ―――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal=(select sal from scott.emp where ename='WARD');   ―――――――――――――――――――――――――――――――――――――

  单击按钮,出现如图4.19所示的结果。

  :第4章4.4441.sql。

  在这段代码中,子查询select sal from scott.emp where ename='WARD'的含义是从emp数据表中查询姓名为WARD的员工的薪水,父查询的含义是要找出emp数据表中薪水大于等于WARD的薪水的员工。上面的查询过程等价于两步的执行过程。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  (1)执行select sal from scott.emp where ename='WARD',得出sal=1250;

  (2)执行select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal=1250;

  4.4.2 带的嵌套查询

  在执行下列语句。

  ―――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal in (select sal from scott.emp where   ename='WARD');

  ―――――――――――――――――――――――――――――――――――――

  单击按钮,出现如图4.20所示的结果。

  :第4章4.4442.sql。

  上述语句完成的是查询薪水和WARD相等的员工,也可以使用来进行查询。 4.4.3 带的嵌套查询

  在执行下列语句。

  ―――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal any(select sal from scott.emp where   job='MANAGER');

  ―――――――――――――――――――――――――――――――――――――

  单击按钮,出现如图4.21所示的结果。

  :第4章4.4443.sql。

  带any的查询过程等价于两步的执行过程。

  (1)执行select sal from scott.emp where job='MANAGER',其结果如图4.22所示。

  :第4章4.4443-1.sql。

  (2)查询到3个薪水值2975、2850和2450,父查询执行下列语句。

  :第4章4.4443-2.sql。

  ――――――――――――――――――――――――――――――――――――――

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal 2975 or sal2850 or sal2450;   ――――――――――――――――――――――――――――――――――――――

  4.4.4 带的嵌套查询

  在执行下列语句。

  ―――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal =some(select sal from scott.emp where   job='MANAGER');

  ―――――――――――――――――――――――――――――――――――――

  单击按钮,出现如图4.23所示的结果。

  :第4章4.4444.sql。

  带some的嵌套查询与any的步骤相同。

  (1)子查询,执行select sal from scott.emp where job='MANAGER',其结果如图4.22所示。

  (2)父查询执行下列语句。

  ―――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal =2975 or sal=2850 or sal=2450;   ―――――――――――――――――――――――――――――――――――――

  :第4章4.4444-2.sql。

  带的嵌套查询和的嵌套查询功能是一样的。早期的SQL仅仅允许使用,后来的版本为了和英语的相区分,引入了,同时还保留了关键词。

  4.4.5 带的嵌套查询

  在执行下列语句。

  ―――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal all(select sal from scott.emp where   job='MANAGER');

  ―――――――――――――――――――――――――――――――――――――

  单击按钮,出现如图4.24所示的结果。

  :第4章4.4445.sql。

  带all的嵌套查询与的步骤相同。

  (1)子查询,结果如图4.22所示。

  (2)父查询执行下列语句。

  ―――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal 2975 and sal2850 and sal2450;

  ―――――――――――――――――――――――――――――――――――――

  :第4章4.4445-2.sql。

  4.4.6 带的嵌套查询

  在执行下列语句。

  ―――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp,scott.dept where exists (select * from scott.emp where   scott.emp.deptno=scott.dept.deptno);

  ―――――――――――――――――――――――――――――――――――――

  单击按钮,出现如图4.25所示的结果。

  :第4章4.4446.sql。

  4.4.7 并操作的嵌套查询

  并操作就是集合中并集的概念。属于集合A或集合B的元素总和就是并集。 在执行下列语句。

  ―――――――――――――――――――――――――――――――――――――

  (select deptno from scott.emp) union (select deptno from scott.dept);   ―――――――――――――――――――――――――――――――――――――

  单击按钮,出现如图4.26所示的结果。

  :第4章4.4447.sql。

  4.4.8 交操作的嵌套查询

  交操作就是集合中交集的概念。属于集合A且属于集合B的元素总和就是交集。 在执行下列语句。

  ―――――――――――――――――――――――――――――――――――――

  (select deptno from scott.emp) intersect (select deptno from scott.dept);   ―――――――――――――――――――――――――――――――――――――

  单击按钮,出现如图4.27所示的结果。

  :第4章4.4448.sql。

  4.4.9 差操作的嵌套查询

  差操作就是集合中差集的概念。属于集合A且不属于集合B的元素总和就是差集。

  在执行下列语句。

  ―――――――――――――――――――――――――――――――――――――

  (select deptno from scott.dept) minus (select deptno from scott.emp);

  ―――――――――――――――――――――――――――――――――――――

  单击按钮,出现如图4.28所示的结果。

  :第4章4.4449.sql。

  并、交和差操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。

来源:http://www.tulaoshi.com/n/20160219/1615644.html

延伸阅读
标签: SQLServer
因为项目需要,需要对上传的文件内容进行查询。通过MSDN了解到Windows索引服务可以实现对文件的全文检索,并可以通过SQL Server进行查询。项目将这两者结合,实现对上传文件的全文检索的解决方案。 方案概要: 1. 改变文件存储时的文件名 2. 配置索引服务器,并将索引服务器与MS SQL Server关联。 3. 修改SQL语句,将进行全文查询语句的内容...
标签: SQLServer
 因为项目需要,需要对上传的文件内容进行查询。通过MSDN了解到Windows索引服务可以实现对文件的全文检索,并可以通过SQL Server进行查询。项目将这两者结合,实现对上传文件的全文检索的解决方案。方案概要:
标签: SQLServer
  联合查询 UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为: select_statement UNION [ALL] selectstatement [UNION [ALL] selectstatement][…n] 其中selectstatement为待联合的SELECT查询语句。 ALL选项表示将所有行合并到结果集合中。不指定该项...
标签: SQLServer
  连接查询 通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵...
标签: SQLServer
如果一个触发器在执行操作时引发了另一个触发器,而这个触发器又接着引发下一个触发器……这些触发器就是嵌套触发器。触发器可嵌套至 32 层,并且可以控制是否可以通过"嵌套触发器"服务器配置选项进行触发器嵌套。 如果允许使用嵌套触发器,且链中的一个触发器开始一个无限循环,则超出嵌套级,而且触发器将终止。 可使用嵌套触发器...

经验教程

776

收藏

28
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部