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 Server事務(wù)語(yǔ)法及使用方法實(shí)例分析
這篇文章主要介紹了Sql Server事務(wù)語(yǔ)法及使用方法,結(jié)合實(shí)例形式分析了Sql Server事務(wù)的概念、原理及相關(guān)使用技巧,需要的朋友可以參考下2019-02-02Zabbix監(jiān)控SQL Server服務(wù)狀態(tài)的方法詳解
這篇文章主要給大家介紹了關(guān)于Zabbix監(jiān)控SQL Server服務(wù)狀態(tài)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10SQL Server數(shù)據(jù)庫(kù)按百分比查詢出表中的記錄數(shù)
這篇文章主要介紹了SQL Server數(shù)據(jù)庫(kù)在一個(gè)表中按百分比查詢出記錄條數(shù)的方法及代碼示例,需要的朋友可以參考下2015-08-08SqlServer2000+ 身份證合法校驗(yàn)函數(shù)的示例代碼
這篇文章主要介紹了SqlServer2000+ 身份證合法校驗(yàn)函數(shù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05mssql中得到當(dāng)天數(shù)據(jù)的語(yǔ)句
mssql中得到當(dāng)天數(shù)據(jù)的語(yǔ)句...2007-08-08

sql?server多行數(shù)據(jù)合并一行顯示簡(jiǎn)單實(shí)現(xiàn)代碼
有時(shí)候我們需要將多行數(shù)據(jù)按照某一列進(jìn)行合并,以便更方便地進(jìn)行數(shù)據(jù)分析和處理,這篇文章主要給大家介紹了關(guān)于sql?server多行數(shù)據(jù)合并一行顯示簡(jiǎn)單實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
2023-12-12 
SQL Server日期加減函數(shù)DATEDIFF與DATEADD用法分析
這篇文章主要介紹了SQL Server日期加減函數(shù)DATEDIFF與DATEADD用法,結(jié)合分析SQL Server使用DATEDIFF與DATEADD函數(shù)獲取常見(jiàn)的周、月、天等日期相關(guān)運(yùn)算技巧,需要的朋友可以參考下
2017-03-03