SQL語(yǔ)句的并集UNION 交集JOIN(內(nèi)連接,外連接)等介紹
更新時(shí)間:2014年07月06日 00:35:56 投稿:mdxy-dxy
這篇文章主要介紹了SQL語(yǔ)句的并集UNION,交集JOIN(內(nèi)連接,外連接),交叉連接(CROSS JOIN笛卡爾積),差集(NOT IN) ,需要的朋友可以參考下
1.
a. 并集UNION SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table2
b. 交集JOIN SELECT * FROM table1 AS a JOIN table2 b ON a.name=b.name
c. 差集NOT IN SELECT * FROM table1 WHERE name NOT IN(SELECT name FROM table2)
d. 笛卡爾積 SELECT * FROM table1 CROSS JOIN table2 與 SELECT * FROM table1,table2相同
2.
SQL中的UNION 與UNION ALL的區(qū)別是,前者會(huì)去除重復(fù)的條目,后者會(huì)仍舊保留。
a. UNION SQL Statement1 UNION SQL Statement2
b. UNION ALL SQL Statement1 UNION ALL SQL Statement2
3.
SQL中的各種JOIN SQL中的連接可以分為內(nèi)連接,外連接,以及交叉連接(即是笛卡爾積)
a. 交叉連接CROSS JOIN 如果不帶WHERE條件子句,它將會(huì)返回被連接的兩個(gè)表的笛卡爾積,返回結(jié)果的行數(shù)等于兩個(gè)表行數(shù)的乘積; 舉例 SELECT * FROM table1 CROSS JOIN table2 等同于 SELECT * FROM table1,table2 一般不建議使用該方法,因?yàn)槿绻蠾HERE子句的話,往往會(huì)先生成兩個(gè)表行數(shù)乘積的行的數(shù)據(jù)表然后才根據(jù)WHERE條件從中選擇。 因此,如果兩個(gè)需要求交際的表太大,將會(huì)非常非常慢,不建議使用。
b. 內(nèi)連接INNER JOIN 如果僅僅使用 SELECT * FROM table1 INNER JOIN table2 沒(méi)有指定連接條件的話,和交叉連接的結(jié)果一樣。 但是通常情況下,使用INNER JOIN需要指定連接條件。 -- 等值連接(=號(hào)應(yīng)用于連接條件, 不會(huì)去除重復(fù)的列)
SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column=b.column -- 不等連接(>,>=,<,<=,!>,!<,<>)
例如 SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column<>b.column -- 自然連接(會(huì)去除重復(fù)的列)
c. 外連接OUTER JOIN 首先內(nèi)連接和外連接的不同之處: 內(nèi)連接如果沒(méi)有指定連接條件的話,和笛卡爾積的交叉連接結(jié)果一樣,但是不同于笛卡爾積的地方是,沒(méi)有笛卡爾積那么復(fù)雜要先生成行數(shù)乘積的數(shù)據(jù)表,內(nèi)連接的效率要高于笛卡爾積的交叉連接。 指定條件的內(nèi)連接,僅僅返回符合連接條件的條目。外連接則不同,返回的結(jié)果不僅包含符合連接條件的行,而且包括左表(左外連接時(shí)), 右表(右連接時(shí))或者兩邊連接(全外連接時(shí))的所有數(shù)據(jù)行。
1)左外連接LEFT [OUTER] JOIN 顯示符合條件的數(shù)據(jù)行,同時(shí)顯示左邊數(shù)據(jù)表不符合條件的數(shù)據(jù)行,右邊沒(méi)有對(duì)應(yīng)的條目顯示NULL
例如 SELECT * FROM table1 AS a LEFT [OUTER] JOIN ON a.column=b.column
2)右外連接RIGHT [OUTER] JOIN 顯示符合條件的數(shù)據(jù)行,同時(shí)顯示右邊數(shù)據(jù)表不符合條件的數(shù)據(jù)行,左邊沒(méi)有對(duì)應(yīng)的條目顯示NULL
例如 SELECT * FROM table1 AS a RIGHT [OUTER] JOIN ON a.column=b.column
3)全外連接顯示符合條件的數(shù)據(jù)行,同時(shí)顯示左右不符合條件的數(shù)據(jù)行,相應(yīng)的左右兩邊顯示NULL
相關(guān)文章
SQL語(yǔ)句實(shí)例說(shuō)明 方便學(xué)習(xí)mysql的朋友
我是在MySQL數(shù)據(jù)庫(kù)中做的測(cè)試,不同的數(shù)據(jù)庫(kù)有一定的差別方便學(xué)習(xí)mysql的朋友2012-09-09
SQL語(yǔ)句技巧:按月統(tǒng)計(jì)數(shù)據(jù)
SQL語(yǔ)句技巧:按月統(tǒng)計(jì)數(shù)據(jù)...2006-08-08
SQL Server連接中三個(gè)常見的錯(cuò)誤分析
SQL Server連接中三個(gè)常見的錯(cuò)誤分析...2007-03-03
SQLServer中JSON文檔型數(shù)據(jù)的查詢問(wèn)題解決
SQL Server 對(duì)于數(shù)據(jù)平臺(tái)的開發(fā)者來(lái)說(shuō)越來(lái)越友好,下面這篇文章主要給大家介紹了關(guān)于SQLServer中JSON文檔型數(shù)據(jù)的查詢問(wèn)題的解決方法,需要的朋友可以參考下2021-06-06
SqlServer數(shù)據(jù)庫(kù)全角轉(zhuǎn)換成半角
SqlServer數(shù)據(jù)庫(kù)全角轉(zhuǎn)換成半角,需要的朋友可以參考一下2013-03-03
將所有符合條件的結(jié)果拼接成一列并用逗號(hào)隔開的一個(gè)sql語(yǔ)句
把所有符合條件的結(jié)果拼接成一列,用逗號(hào)隔開的一個(gè)sql語(yǔ)句。2010-06-06

