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,不難發明兩者的差別。