表連線 join和(+)、union和uion all
應用中的表的連線使用:
join和(+)
區別:Join系列連線的特點是有專門的連線物件和被連線物件,使用on設定專門的連線條件。
(+)連線實質上是一種外連線Outer Join的現象,連線條件放置在where條件列表中,通過不同的位置來對應不同方向的結果。
(+)連線的結果是將(+)號對面的資料表不符合記錄的結果也輸出出來。
1 INNER JOIN 內連線
內連線就類似與我們傳統where的連線方式了,返回嚴格符合條件的資料列。
2 LEFT JOIN / LEFT OUTER JOIN 左連線
左連線left join是保證from子句中的資料表全部顯示。
3 RIGHT JOIN / RIGHT OUTER JOIN 右連線
右連線right join是保證Join的資料表全部顯示。
4 FULL JOIN 全連線
全連線是將兩個資料表中符合連線條件或者不符合連線條件的全部列出。
5 CROSS JOIN 笛卡爾連線。
Cross Join是進行全匹配,兩兩之間進行笛卡爾積運算。
join和(+)連線例項:
內連線:
SELECT * FROM DEPT INNER JOIN EMP ON DEPT.DEPTNO = EMP.DEPTNO;
SELECT * FROM DEPT , EMP WHERE DEPT.DEPTNO = EMP.DEPTNO;
左外連線:
SELECT * FROM DEPT LEFT JOIN EMP ON DEPT.DEPTNO = EMP.DEPTNO;
SELECT * FROM DEPT , EMP WHERE DEPT.DEPTNO = EMP.DEPTNO(+);
右外連線:
SELECT * FROM DEPT RIGHT JOIN EMP ON DEPT.DEPTNO = EMP.DEPTNO;
SELECT * FROM DEPT , EMP WHERE DEPT.DEPTNO(+) = EMP.DEPTNO;
全連線:
SELECT * FROM DEPT FULL JOIN EMP ON DEPT.DEPTNO = EMP.DEPTNO;
笛卡爾連線:
SELECT * FROM DEPT CROSS JOIN EMP;
union和union all,Intersect和Minus的使用
union 對兩個結果集進行並集操作,不包括重複行,同時進行預設規則的排序;
union all 對兩個結果集進行並集操作, 包括重複行, 不進行排序;
intersect 對兩個結果集進行交集操作,不包括重複行,同時進行預設規則的排序;
minus 對兩個結果集進行差操作, 不包括重複行,同時進行預設規則的排序。
關於排序控制:
如果想使用排序時,order by子句必須寫在最後一個結果集裡,
排序時,必須使用第一個查詢語句中的欄位名、欄位序號,並且其排序規則將改變操作後的排序結果.
select * from student where id < 4
union
select * from student where id > 2 and id < 6;
select * from student where id < 4
union all
select * from student where id > 2 and id < 6;
select job from dept1 intersect select job from dept2;
select job from dept1 minus select job from dept2;
備註:關於join和union的區別
如果你明白了兩個連線的原理不難看出:
union 和join不一樣,union這個運運算元是將資料列合併,而join是將欄位合併。
join和(+)
區別:Join系列連線的特點是有專門的連線物件和被連線物件,使用on設定專門的連線條件。
(+)連線實質上是一種外連線Outer Join的現象,連線條件放置在where條件列表中,通過不同的位置來對應不同方向的結果。
(+)連線的結果是將(+)號對面的資料表不符合記錄的結果也輸出出來。
1 INNER JOIN 內連線
內連線就類似與我們傳統where的連線方式了,返回嚴格符合條件的資料列。
2 LEFT JOIN / LEFT OUTER JOIN 左連線
左連線left join是保證from子句中的資料表全部顯示。
3 RIGHT JOIN / RIGHT OUTER JOIN 右連線
右連線right join是保證Join的資料表全部顯示。
4 FULL JOIN 全連線
全連線是將兩個資料表中符合連線條件或者不符合連線條件的全部列出。
5 CROSS JOIN 笛卡爾連線。
Cross Join是進行全匹配,兩兩之間進行笛卡爾積運算。
join和(+)連線例項:
內連線:
SELECT * FROM DEPT INNER JOIN EMP ON DEPT.DEPTNO = EMP.DEPTNO;
SELECT * FROM DEPT , EMP WHERE DEPT.DEPTNO = EMP.DEPTNO;
左外連線:
SELECT * FROM DEPT LEFT JOIN EMP ON DEPT.DEPTNO = EMP.DEPTNO;
SELECT * FROM DEPT , EMP WHERE DEPT.DEPTNO = EMP.DEPTNO(+);
右外連線:
SELECT * FROM DEPT RIGHT JOIN EMP ON DEPT.DEPTNO = EMP.DEPTNO;
SELECT * FROM DEPT , EMP WHERE DEPT.DEPTNO(+) = EMP.DEPTNO;
全連線:
SELECT * FROM DEPT FULL JOIN EMP ON DEPT.DEPTNO = EMP.DEPTNO;
笛卡爾連線:
SELECT * FROM DEPT CROSS JOIN EMP;
union和union all,Intersect和Minus的使用
union 對兩個結果集進行並集操作,不包括重複行,同時進行預設規則的排序;
union all 對兩個結果集進行並集操作, 包括重複行, 不進行排序;
intersect 對兩個結果集進行交集操作,不包括重複行,同時進行預設規則的排序;
minus 對兩個結果集進行差操作, 不包括重複行,同時進行預設規則的排序。
關於排序控制:
如果想使用排序時,order by子句必須寫在最後一個結果集裡,
排序時,必須使用第一個查詢語句中的欄位名、欄位序號,並且其排序規則將改變操作後的排序結果.
select * from student where id < 4
union
select * from student where id > 2 and id < 6;
select * from student where id < 4
union all
select * from student where id > 2 and id < 6;
select job from dept1 intersect select job from dept2;
select job from dept1 minus select job from dept2;
備註:關於join和union的區別
如果你明白了兩個連線的原理不難看出:
union 和join不一樣,union這個運運算元是將資料列合併,而join是將欄位合併。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24070945/viewspace-705563/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- `FULL JOIN` 和 `UNION ALL`
- 【FULL OUTER JOIN】全外連線的union all改寫方法
- sql中union和union allSQL
- oracle知識整理(1) union和union all的區別,left join和right join的區別(各種join的區別)Oracle
- union all和union的區別
- union和union all的區別
- union 和union all 使用區別
- sql中union和union all的用法SQL
- SQL UNION 和 UNION ALL 操作符SQL
- SQL Union和SQL Union All用法(轉)SQL
- LEFT JOIN 和JOIN 多表連線
- sql中UNION和UNION ALL的區別SQL
- SQLite語句(三):JOIN和UNIONSQLite
- SQL UNION 操作符 和 UNION ALL 操作符SQL
- Union和Union All到底有什麼區別
- mysql求交集:UNION ALL合併查詢,inner join內連線查詢,IN/EXISTS子查詢MySql
- 兩種連線的表達 :left(right) join 和 (+)
- 排序和表連線排序
- Oracle表連線操作——Hash Join(雜湊連線)下Oracle
- Oracle表連線操作——Hash Join(雜湊連線)上Oracle
- 理解full outer jion,union,union all
- Union與Union All的區別
- MySql的join(連線)查詢 (三表 left join 寫法)MySql
- Oracle(+)連線與Join連線Oracle
- Oracle表連線操作——Merge Sort Join(合併排序連線)Oracle排序
- MySQL學習(五) UNION與UNION ALLMySql
- 查詢集合操作union與union all
- ORACLE中union/union all/Intersect/Minus用法Oracle
- 【SQL】UNION ALL 與UNION 的區別SQL
- Oracle中的Union、Union All、Intersect、MinusOracle
- 表的連線方式:NESTED LOOP、HASH JOIN、SORT MERGE JOIN(轉)OOP
- sql 連線查詢例項(left join)三表連線查詢SQL
- Oracle 中Union、Union All、Intersect、Minus(並,交,差)Oracle
- union all 最佳化案例
- 連線和半連線
- SQL訪問路徑和表連線SQL
- 連線查詢簡析 join 、 left join 、 right join
- 【SQL 學習】表連線--natural join 的一個bugSQL