叉集,即笛卡尔集
select e.*, d.*
from emp e cross join dept d
无连接条件
2满外联接
任一边有值就会显示。
select e.*, d.*
from emp e full outer join dept d
on e.deptno=d.deptno
也可以省略outer关键字
3内连接
只返回满足连接条件的数据(两边都有的才显示)。 对应等值连接
select e.*, d.*
from emp e inner join dept d
on e.deptno=d.deptno
也可以省略inner关键字。
对应Oracle写法:
select e.*, d.*
from emp e , dept d
where e.deptno=d.deptno
4左外连接
左边有值才显示。
select e.*, d.*
from emp e left outer join dept d
on e.deptno=d.deptno
也可以省略outer关键字
5右外连接
右边边有值才显示。
select e.*, d.*
from emp e right outer join dept d
on e.deptno=d.deptno
也可以省略outer关键字
【注意】SQL99中,外链接取值与关系表达式=号左右位置无关。取值跟from后表的书写顺序有关。
“xxx left outer join yyy” 则为取出xxx的内容。 “xxx right outer join yyy”则为取出yyy的内容
6对比练习
题目1:
查询员工信息,员工号,姓名,月薪,部门名称
select...from emp e, dept d
where e.deptno = d.deptno;
Oracle实现:
select e.deptno, e.ename, e.sal, d.dname
from emp e, dept d
where e.deptno = d.deptno
SQL99实现:
select e.deptno, e.ename, e.sal, d.dname
from emp e innerjoin dept d
on e.deptno = d.deptno
对比记忆规律:
“,” → [inner]joinwhere → on
对比结论:mysql能识别Oracle中使用 = 连接的书写方法。