SQL执行顺序
from .. where ..group by..having .. select..rownum..order by
多表查询: 格式: select * from 表1,表2
内联接:
1.隐式内联接:
等值内联接: where e1.deptno = d1.deptno;
不等值内联接: where e1.deptno <> d1.deptno;
自联接: 自己连接自己
2.显示内联接:
select * from 表1 inner join 表2 on 连接条件
inner 关键字可以省略
内联接, 单行子查询, 多行子查询
in
not in
any
all
exists
通常情况下, 数据库中不要出现null 最好的做法加上Not null
null值并不代表不占空间, char(100) null 100个字符
exists(查询语句) : 判断是否存在。 返回结果为boolean(true/false)
数据量比较大的时候是非常高效的
select * from emp where exists(select * from emp where deptno = 1234567); --不存在,条件不成立。查询结果为空
select * from emp where exists(select * from emp where deptno = 20); --存在,条件成立。执行select * from emp
语句示例
--查询员工编号,员工姓名,员工的部门名称,经理的编号,经理的姓名,经理的部门名称
select e1.emp