跨表查询/ 连接查询
概念
1. 一张表操作,叫做单表查询
2. 实际开发时,存储在多张表中的,
3. 在检索的时候,将多种表联合起来,获取数据,这种查询方式叫做,连接查询,或者跨表查询
连接查询
1. SQL92[ 1992]
2. SQL99 [1999: 更新的语法]
3. DBA: DataBase Administractor
按连接方式分类
1. 内连接
* 等值连接
* 非分值连接
* 自连接
2. 外连接
* 左外连接(左连接)
* 右外连接(右连接)
3. 全连接(多个表连接时,没加条件限制)
若两张表进行查询时,没有条件限制,则总数为两张表的乘积,成为笛卡尔积
,两张表连接时。需要添加条件限制。
SQL92语法,内连接-等值写法
select e.ename, d.dname from emp e, dept d where e.deptno = d.deptno
SQL99语法,内连接-等值写法
select e.ename, d.dname
from emp e
inner (可以省略) join dept d on e.deptno = d.deptno
SQL99语法,内连接-非等值写法
select
e.ename, e.sal, s.grade
from emp e
join salgrade s on e.sal between s.losal and s.hisal;
SQL99语言, 内练剑-自连接
select e1.ENAME, e2.ENAME boss
from emp e1
left join emp e2 on e1.MGR = e2.EMPNO
SQL99 左外连接/右外连接
SELECT
d.DNAME,
e.ename
from dept d
left outer(可以省略) join emp e on d.DEPTNO = e.DEPTNO
多表关联的执行原理
SELECT
e.ename,
d.DNAME,
s.grade
from emp e
left join dept d on d.deptno = e.deptno
left join salgrade s on e.sal BETWEEN s.losal and s.hisal
from
a
left join b
left join c
a 先和b进行关联, 然后,a在和c进行关联。