-
in 等于列表中的任何一个
any 和子查询返回的任意一个值比较
all 和子查询返回的所有值比较
查看全部 -
单行子查询只能使用单行操作符;多行子查询只能使用多行操作符
查看全部 -
select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal
from emp e
where sal> (select avg(sal) from emp where deptno=e.deptno);
查看全部 -
rownum 行号 伪劣
行号永远按照默认的顺序生成
行号只能使用<, <=;不能使用>,>=
select rownum,empno,ename,sal
from (select * from emp order by sal desc)
where rownum<=3;
查看全部 -
select e.*
from emp e,dept d
where e.deptno=d.deptno and d.dname='SALES'; 等于下面的查询
查看全部 -
select *
from emp
where deptno=(select deptno
from dept
where dname='SALES');
查看全部 -
select *
from emp
where sal>(select sal
from emp
where ename='SCOTT');
select * from emp where sal>(select sal from emp where ename='SCOTT'); -- where字句后的子查询
2. select empno,ename,sal, (select job from emp where empno=7838) 第四列
from emp --在select子句后的子查询必须是单行只查询(只返回一条记录)
3.select deptno,avg(sal)
from emp
group by deptno
having avg(sal) >(select max(sal) from emp where deptno=30);
4.select *
from (select empno,ename,sal from emp);
查看全部 -
子查询注意的10个问题
子查询语法中的小括号
2.子查询的书写风格
3.可以使用子查询的位置:where select having from
4.不可以使用子查询的位置:group by
5.强调:from后面的子查询
6.主查询和子查询可以不是同一张表
7.一般不在子查询中,使用排序;但在Top-N分析问题中,必须对子查询排序。
8.一般先执行子查询,再执行主查询;但相关子查询例外
9.单行子查询只能使用单行操作符;多行子查询只能使用多行操作符
10.注意:子查询中是null值问题。
查看全部 -
自连接存在的问题
不适合操作大表。
解决办法:层次查询
层次查询在某些情况下,可以替代自连接,本质上是一个单表查询。
查看全部 -
select e.ename 员工姓名,b.bname 老板姓名
from emp e,emp b
where e.mgr=b.empno;
自连接 一张表取两个别名。
查看全部 -
自连接 核心:通过别名,将同一张表视为多张表
查看全部 -
select d.deptno 部门号, d.dname 部门名称 ,count(e.empno) 人数
from emp e,dept d
where e.deptno(+)=d.deptno
group by d.deptno,d.dname;
右外连接。在左边加(+)
左外连接。在右边加(+)
查看全部 -
select d.deptno 部门号 ,d.dname 部门名称 ,count(e.empno) 人数
from emp e,dept d
where e.deptno=d.deptno
group by d.deptno,d.dname;
查看全部 -
外连接
核心:通过外连接,把对于连接条件不成立的记录,仍然包含在最后的结果中
左外连接:当连接条件不成立的时候,等号左边的表仍然被包含
右外连接:当连接条件不成立的时候,等号右边的表仍然被包含。
查看全部 -
外连接:核心:通过外连接,把对于连接条件不成立的记录,仍然包含在最后的结果中。
查看全部
举报