理解sql語句的內連接、左外連接、右外連接

理解sql語句的內連接、左外連接、右外連接

推薦( 免費):SQL教程

大家在初學數據庫時,對DQL中的連接查詢是否有些疑惑,不知道什么時候什么場景下該用那種連接查詢?
理解sql語句的內連接、左外連接、右外連接
不要著急,接下來由我來給大家介紹一下,本人對內連接、左外連接、右外連接的特點和應用場景的理解,供大家參考。

以下的代碼演示均基于name表和country表展開。
name表

id name
1 西施
2 楊玉環
3 貂蟬
4 王昭君
5 趙飛燕

country表

id country A_ID
1 春秋時期越國人 1
2 唐代蒲州永樂人 2
3 東漢末年山西忻州人 3
4 西漢時期南郡秭歸人 4
5 戰國時期 6

注 : 1)b表A_ID與a表a_id 存在關系 2)連接查詢是要使用關聯條件去除不匹配數據否則會出現笛卡爾積

1) 內連接

語法:	select  要查詢的字段 from 表名1 inner join 表名2 on 表1.字段 = 表2.字段; 	inner join 可簡寫為 逗號, 內連接特點: 	只會保留完全符合on后條件的數據 應用場景: 	如果兩張表有外鍵關系可以使用內鏈接,因為通過內鏈接每一條只能返回單條記錄
select * from name n inner join country c on n.id = c.N_ID;
id name id country N_ID
1 西施 1 春秋時期越國人 1
2 楊玉環 2 唐代蒲州永樂人 2
3 貂蟬 3 東漢末年山西忻州人 3
4 王昭君 4 西漢時期南郡秭歸人 4

2)左外連接

語法:	select 要查詢的字段 from 表1 left outer join 表2 on 表1.字段 = 表2.字段; 	outer 可省略 左外連接特點: 	以左表為主,會保留左表中不符合on后條件的數據 應用場景: 	只有部分記錄可以從表2中查到,但表1想要顯示所有記錄,就可以和表2通過左外連接查詢。
select * from name n left join country c on n.id=c.N_ID;
id name id country N_ID
1 西施 1 春秋時期越國人 1
2 楊玉環 2 唐代蒲州永樂人 2
3 貂蟬 3 東漢末年山西忻州人 3
4 王昭君 4 西漢時期南郡秭歸人 4
5 趙飛燕 null null null

3) 右外連接

語法:	select * from 表1 right outer join 表2 on 表1.字段 = 表2.字段; 	outer 可省略 右外連接特點: 	以右表為主,會保留右表中不符合on后條件的數據 應用場景: 	和左外連接相反 	只有部分記錄可以從表1中查詢到,但表2想要顯示所有記錄, 就可以和表1通過右外連接查詢。
select * from name n right join country c on n.id=c.N_ID;
id name id country N_ID
1 西施 1 春秋時期越國人 1
2 楊玉環 2 唐代蒲州永樂人 2
3 貂蟬 3 東漢末年山西忻州人 3
4 王昭君 4 西漢時期南郡秭歸人 4
null null 5 戰國時期 6

4) 完全鏈接

語法:	select * from 表1 full join 表2 on 表1.字段 = 表2.字段;完全連接特點: 	會保留表1和表2的全部數據
select * from name n full join country c on n.id=c.N_ID;
id name id country N_ID
1 西施 1 春秋時期越國人 1
2 楊玉環 2 唐代蒲州永樂人 2
3 貂蟬 3 東漢末年山西忻州人 3
4 王昭君 4 西漢時期南郡秭歸人 4
5 趙飛燕 null null null
null null 5 戰國時期 6

注意:該語法在mysql中不適用
好的,本人介紹完畢,不知道有沒有幫助到各位呢?
如果有什么不對,還請各位指出哦~
理解sql語句的內連接、左外連接、右外連接

更多相關知識敬請關注SQL教程欄目~

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享