Join_type連接類型分類如下:
1、 內連接:
內連接根據所使用的比較方式不同,把內連接分爲了:
1) 等值連接:在連接條件中使用等於號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重複列。
SQL> select * from emp e inner join dept d on e.deptno = d.deptno;
2) 不等連接:在連接條件使用除等於運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。
SQL> select * from emp e inner join dept d on e.deptno>d.deptno;
3) 自然連接:在連接條件中使用等於(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,並刪除連接表中的重複列。
SQL> select * from emp natural join dept;
SQL> select e.*,d.dname,d.loc from emp e inner join dept d on e.deptno = d.deptno;
SQL> select d.*,e.ename,e.empno,e.job,e.mgr,e.hiredate,e.sal,e.comm from emp e inner join dept d on e.deptno=d.deptno;
備註:Distinct是去掉重複的行,而自然連接是去掉重複的列。
2、 外連接
內連接的查詢結果都是滿足連接條件的記錄。但是,有時我們也希望輸出那些不滿足連接條件的記錄的信息。比如,我們想知道這個部門中所有員工的情況,也包括沒有員工的部門,這時就需要使用外連接。外連接是隻限制一張表中的數據必須滿足連接條件,而另一張表中的數據可以不滿足連接條件的連接方式。3種外連接:
1) 左外連接(LEFT OUTER JOIN)
如果在連接查詢中,連接表左端的表中所有的記錄都列出來,並且能在右端的表中找到匹配的記錄,那麼連接成功。如果在右端的表中,沒能找到匹配的記錄,那麼對應的記錄是空值(NULL)。這時,查詢語句使用關鍵字 LEFT OUTER JOIN,也就是說,左外連接的含義是限制連接關鍵字右端的表中的數據必須滿足連接條件,而不關左端的表中的數據是否滿足連接條件,均輸出左端表中的內容。
例如:要查詢所有部門的員工信息查詢語句爲
SQL> select * from dept d left outer join emp e on e.deptno=d.deptno order by d.deptno; 左外連接查詢中左端表中的所有記錄的信息都得到了保留。
備註:部門表中記錄保留,如果部門中沒有員工,部門顯示 員工記錄用null補充。
2)右外連接(RIGHT OUTER JOIN)
右外連接與左外連接類似,只是右端表中的所有元組都列出,限制左端表的數據必須滿足連接條件,而不管右端表中的數據是否滿足連接條件,均輸出表中的內容。
例如:同上例內容,查詢語句爲
SQL> select * from emp e right outer join dept d on e.deptno=d.deptno order by d.deptno;
右外連接查詢中右端表中的所有元組的信息都得到了保留。
3)全外連接(FULL OUTER JOIN)
全外連接查詢的特點是左、右兩端表中的記錄都輸出,如果沒能找到匹配的記錄,就使用NULL來代替。
例如:同左外連接例子內容,查詢語句爲
SQL> select * from emp e full outer join dept d on e.deptno=d.deptno order by d.deptno;
全外連接查詢中所有表中的元組信息都得到了保留。
備註:一定分清:左與右 在join後邊的是右