叉集,即笛卡爾集
select e.*, d.*
from emp e cross join dept d
無連接條件
2滿外聯(lián)接
任一邊有值就會顯示。
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實現(xiàn):
select e.deptno, e.ename, e.sal, d.dname
from emp e, dept d
where e.deptno = d.deptno
SQL99實現(xiàn):
select e.deptno, e.ename, e.sal, d.dname
from emp e innerjoin dept d
on e.deptno = d.deptno
對比記憶規(guī)律:
“,” → [inner]joinwhere → on
對比結論:mysql能識別Oracle中使用 = 連接的書寫方法。