国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL中JOIN和UNION區別、用法及示例介紹

2020-07-25 13:14:09
字體:
來源:轉載
供稿:網友
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,不難發現二者的區別。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天长市| 滨海县| 临朐县| 湛江市| 常山县| 聂拉木县| 长岭县| 台北县| 淮北市| 文安县| 枣阳市| 盐山县| 通道| 林西县| 宁都县| 绥宁县| 宣化县| 文成县| 岱山县| 尚义县| 靖远县| 吉木萨尔县| 环江| 石棉县| 威信县| 田林县| 洮南市| 吉隆县| 德化县| 中西区| 壶关县| 墨江| 手机| 沙洋县| 永昌县| 寿阳县| 山阳县| 迁安市| 克拉玛依市| 土默特左旗| 突泉县|