程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL中JOIN和UNION差別、用法及示例引見

SQL中JOIN和UNION差別、用法及示例引見

編輯:MSSQL

SQL中JOIN和UNION差別、用法及示例引見。本站提示廣大學習愛好者:(SQL中JOIN和UNION差別、用法及示例引見)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL中JOIN和UNION差別、用法及示例引見正文


1.JOIN和UNION差別

join 是兩張表做交連後外面前提雷同的部門記載發生一個記載集,
union是發生的兩個記載集(字段要一樣的)並在一路,成為一個新的記載集 。

JOIN用於依照ON前提聯接兩個表,重要有四種:
INNER JOIN:外部聯接兩個表中的記載,僅當至多有一個同屬於兩表的行相符聯接前提時,內聯接才前往行。我懂得的是只需記載不相符ON前提,就不會顯示在成果集內。
LEFT JOIN / LEFT OUTER JOIN:內部聯接兩個表中的記載,並包括左表中的全體記載。假如左表的某記載在右表中沒有婚配記載,則在相干聯的成果集中右表的一切選擇列表列均為空值。懂得為即便不相符ON前提,左表中的記載也全體顯示出來,且成果集中該類記載的右表字段為空值。
RIGHT JOIN / RIGHT OUTER JOIN:內部聯接兩個表中的記載,並包括右表中的全體記載。簡略說就是和LEFT JOIN反過去。
FULL JOIN / FULL OUTER JOIN:完全內部聯接前往左表和右表中的一切行。就是LEFT JOIN和RIGHT JOIN和歸並,閣下兩表的數據都全體顯示。

JOIN的根本語法:
Select table1.* FROM table1 JOIN table2 ON table1.id=table2.id

sql寫法

內銜接inner join:

SELECT msp.name, party.name
FROM msp JOIN party ON party=code



SELECT msp.name, party.name
FROM msp inner JOIN party ON party=code


左銜接left join :

SELECT msp.name, party.name
FROM msp LEFT JOIN party ON party=code

右銜接right join :

SELECT msp.name, party.name
FROM msp RIGHT JOIN party ON msp.party=party.code

全銜接(full join):

SELECT msp.name, party.name
FROM msp FULL JOIN party ON msp.party=party.code


UNION運算符

將兩個或更多查詢的成果集組合為單個成果集,該成果集包括結合查詢中的一切查詢的全體行。UNION的成果集列名與UNION運算符中第一個Select語句的成果集的列名雷同。另外一個Select語句的成果集列名將被疏忽。
個中兩種分歧的用法是UNION和UNION ALL,差別在於UNION從成果集中刪除反復的行。假如應用UNION ALL 將包括一切行而且將不刪除反復的行。

UNION和UNION ALL的差別:

union 檢討反復
union all 不做檢討
好比 select 'a' union select 'a' 輸入就是一行 a
好比 select 'a' union all select 'a' 輸入就是兩行 a

2. 經由過程上面的例子,可以清楚的看出和懂得2者的差別
實例1 典范的二表銜接演示

假定有兩個表Table1和Table2,其包括的列和數據分離如表1.1和表1.2所示。

表1.1 Table1數據庫表

ColumnA

ColumnB

ColumnC

X1

Y1

Z1

X2

Y2

Z2

X3

Y3

Z3

 

表1.2 Table2數據庫表

 

ColumnA

ColumnD

ColumnE

X1

D1

E1

X2

D2

E2

X3

D3

E3

 

Table1和Table2表共有的列為ColumnA,假如經由過程ColumnA列的值銜接Table1和Table2兩個表,即銜接前提為Table1.ColumnA=Table2.ColumnA,此時獲得的銜接成果如表1.3所示。

表1.3 銜接Table1和Table2表

ColumnA

ColumnB

ColumnC

ColumnD

ColumnE

X1

Y1

Z1

D1

E1

X2

Y2

Z2

D2

E2

X3

Y3

Z3

D3

E3

上述銜接進程的完成代碼可表現以下:SELECT * FROM Table1 JOIN Table2 ON Table1.ColumnA=Table2.columnA

實例2 典范的二表記載的UNION運算

假定有兩個表Table3和Table4,其包括的列和數據分離如表2.1和表2.2所示。

表2.1 Table3數據庫表

 

ColumnA

ColumnB

ColumnC

X1

Y1

Z1

X2

Y2

Z2

X3

Y3

Z3

 

表2.2 Table4數據庫表、

 

ColumnA

ColumnD

ColumnE

X4

Y4

Z4

X5

Y5

Z5

X6

Y6

Z6

 

Table3表和Table4表具有雷同的列構造,列數也要雷同,列名可以分歧,以第一個表的列名為新表的列名,是以可使用UNION運算符銜接兩個表的記載集,獲得的銜接成果如表2.3所示。

表2.3 應用UNION銜接Table3表和Table4表的記載

 

ColumnA

ColumnB

ColumnC

X1

Y1

Z1

X2

Y2

Z2

X3

Y3

Z3

X4

Y4

Z4

X5

Y5

Z5

X6

Y6

Z6

上述銜接進程的完成代碼可表現以下:SELECT * FROM Table3 UNION SELECT *FROM Table4

比較實例1和實例2,不難發明兩者的差別。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved