子查询的语法很简单,就是select语句的嵌套使用 SQL select * from emp where sal ( select sal from emp where ename = ‘ SCOTT ‘ ); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO -- -------- ---------- --------- ---------- --
子查询的语法很简单,就是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>