-
笛卡儿积现象:若两张表进行连接查询的时候没有任何条件限制,最终的查询结果总数是两张表记录的乘积,该现象称为笛卡儿积现象.
-
跨表查询 :
-
年代分类: SQL92 SQL99
-
连接方式分类: 内连接:等值连接 非等值连接 自连接
-
外连接 左外连接/左连接 右外连接/右连接
-
全连接
-
接下来我们就一个一个来说:
SQL92 :select ename,dname from emp as e,dept as d where e.deptno=d.deptno;
这是SQL92多表查询的一个语法
SQL99(掌握): select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno
where 数据过滤条件; 这是SQL99多表查询的一个语法(表取别名可以省略as,字段一般取别名不省略as,on后跟表的连接条件).
等值连接: select e.ename,d.dname from emp e inner join dept d on e.deptno=d.deptno(inner往往会省略掉,加上可增强程序的可读性)
非等值连接:select e.ename,e.sal,s.grade from emp e inner join salgrade s on e.sal between s.losal and s.hisal
自连接:把一张表看成两张表使用 select a.ename,b.ename as leadername from emp a join emp b on a.mgr=b.empno
外连接查询结果条数>=内连接的查询结果条数
右连接/右外连接:让右边这个表无条件的显示出来,左边这个表没有相匹配的,自动补上NULL.
省略了一个关键字:outer
select e.ename,d.dname from emp e right outer join dept d on e.deptno=d.deptno;
同理,左连接/左外连接:
select a.ename,b.ename as leadername from emp a left outer join emp b on a.mgr=b.empno
区分内外连接的关键字:left或right