(十三)子查询

子查询的语法很简单,就是select语句的嵌套使用

SQL> select * from emp where sal>(select sal from emp where ename='SCOTT');

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7839 KING       PRESIDENT            17-11月-81           5000                    10

已用时间:  00: 00: 00.02
SQL>

子查询的语法格式:

select select_list 
from table 
where exper operator
    (select select_list 
    from table);

注意:
  1.主查询和子查询可以是不同的表,只要子查询的结果,主查询可以使用就可以

  2.主查询的select, where, having, from 后都可以放置子查询

  3.不可以在group by 后放置子查询语句

  4.强调:在from 后放置的子查询(***) ,from后放置的是一个集合(表,查询的结果)

  5一般先执行子查询(内查询),再执行主查询(外查询),但相关子查询除外.

  6.单行操作符对应单行子查询,多行操作符对应多行子查询

主,子查询在不同的表之间进行

查询部门名称是‘SALES’的员工信息

SQL> select * from emp e where e.deptno = (select d.deptno from dept d where d.dname='SALES');

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30
      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30
      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
      7900 JAMES      CLERK           7698 03-12月-81            950                    30

已选择6行。

已用时间:  00: 00: 00.05
SQL>

使用多表查询

SQL> select e.* from emp e,dept d where e.deptno=d.deptno and d.dname='SALES';

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30
      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30
      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
      7900 JAMES      CLERK           7698 03-12月-81            950                    30

已选择6行。

已用时间:  00: 00: 00.06
SQL>

猜你喜欢

转载自www.cnblogs.com/xiangtingshen/p/10718148.html