表连接
? 初學(xué)SQL表連接的時(shí)候,什么笛卡爾積,左連接,右連接看的頭都大了
?
? 后來看了《SQL Server技術(shù)內(nèi)幕2008:T-SQL查詢》之后,豁然開朗。今天寫數(shù)據(jù)庫(kù)又用到了表連接,印象有點(diǎn)模糊了,趕緊找地方寫下來先。
?
? 所謂的笛卡爾積其實(shí)就是多行數(shù)據(jù)交叉連接。
? 例如
A???? 1??????? 與??????????? M????? 3????????????????????????????????? A?????? 1????? N?????? 4
B???? 2??????????????????????? N?????? 4? 進(jìn)行笛卡爾積得????? A?????? 1????? M????? 3
??????????????????????????????????????????????????????????????????????????????? B??????? 2????? N????? 4
??????????????????????????????????????????????????????????????????????????????? B??????? 2????? M????? 3
?? 其實(shí)表連接總共就4種連接,分別是交叉連接,內(nèi)連接,外連接和多表連接
?? 1.交叉連接??????? 關(guān)鍵字(cross join)
?????? 交叉連接就是兩表進(jìn)行笛卡爾積獲得的結(jié)果集
? 2.內(nèi)連接????? 關(guān)鍵字(inner join)
?????? 內(nèi)連接就是兩表進(jìn)行笛卡爾積的結(jié)果再通過“on”條件進(jìn)行篩選后得到的結(jié)果集
? 3.外連接????? 關(guān)鍵字(left join? ,right join)
?????? 有時(shí)候我們希望兩個(gè)表進(jìn)行笛卡爾積并篩選后,可以保留其中一個(gè)表不符合條件的行,于是外連接就應(yīng)運(yùn)而生了。可以把外連接理解為兩個(gè)表進(jìn)行笛卡爾積并篩選后,再根據(jù)關(guān)鍵字(left還是right)選擇將左表或右表不符合條件的列置為null并顯示出來
?? 4.多表連接??? 關(guān)鍵字(union all)
??????? 這個(gè)就沒什么好說的了,列數(shù)和數(shù)據(jù)類型的多個(gè)表按照從上到下的順序(這樣說其實(shí)不準(zhǔn)確,結(jié)果集是沒有先后順序的)依次落起來就完了。
轉(zhuǎn)載于:https://www.cnblogs.com/qiuyeyaozhuai/archive/2012/10/25/2740418.html
總結(jié)
- 上一篇: 34个省域统计年鉴合集(32省更新至20
- 下一篇: GridView强制不换行