Join是關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)的重要操作之一,SQL Server中包含的常用Join:內(nèi)聯(lián)接、外聯(lián)接和交叉聯(lián)接等,Join用于根據(jù)兩個(gè)或者多個(gè)表中的列之間的關(guān)系,從這些表中查詢(xún)數(shù)據(jù)。
新建兩張表作為例子,表如下
SQL語(yǔ)句
- <span style="color:#333333;">select * from T_NumA </span>
- <span style="color:#ff0000;">inner join</span><
- span style="color:#333333;"> T_NumB </span>
- <span style="color:#ff0000;">on</span><
- span style="color:#333333;"> T_NumA .aID =T_NumB .bID </span>
結(jié)果如下
運(yùn)行的結(jié)果是得到兩個(gè)表之間的交集。用右邊的圖可以看出,Inner join符合交換律:“A inner join B”,“B inner join A”一樣。
SQL語(yǔ)句
- <span style="color:#333333;">select * from T_NumA </span><span style="color:#ff0000;">left outer join</span><span style="color:#333333;"> T_NumB on T_NumA .aID =T_NumB .bID </span>
- <span style="color: rgb(51, 51, 51); ">select * from T_NumA </span><span style="color:#ff0000;">right outer join</span>
- <span style="color:#333333;"> T_NumB on T_NumA .aID =T_NumB .bID
- </span>
SQL語(yǔ)句
- <span style="color:#555555;">select * from T_NumA </span><span style="color:#ff0000;">full outer join</span><span style="color:#555555;"> T_NumB on T_NumA .aID =T_NumB .bID
- </span>
由運(yùn)行結(jié)果可知:該聯(lián)接產(chǎn)生A和B的并集。但是需要注意的是,對(duì)于沒(méi)有匹配的記錄,則會(huì)以null做為值。
本文所講的聯(lián)接語(yǔ)句都是將不同表的列進(jìn)行縱向拼接,因?yàn)樵谧鰴C(jī)房收費(fèi)系統(tǒng)個(gè)人重構(gòu)的時(shí)候,只涉及到縱向拼接表的查詢(xún),有縱向,那么肯定也有橫向,橫向拼接也有多種方式:Not in,Union和Intersect,這里只做簡(jiǎn)單介紹,Not in是去兩個(gè)結(jié)果集的差集。Union是兩個(gè)集合的并集,會(huì)自動(dòng)刪除重復(fù)的記錄,也可以用Union All來(lái)保留所有記錄行。Intersect是兩個(gè)集合的交集,即同時(shí)存在于兩個(gè)集合中的記錄。
- <span style="color:#555555;">select * from T_NumA </span>
- <span style="color:#ff0000;">cross join</span>
- <span style="color:#555555;"> T_NumB </span>