最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

《海賊王》(SQL版)第一集:inner join、left join、right join的區(qū)別

2019-12-06 09:41 作者:詩書畫唱  | 我要投稿


inner join(內(nèi)連接)、left join(左連接)、right join(右連接)、full join(全連接)四種方式,僅查詢出來的結(jié)果有所不同。?
例如我們有兩張表:?

這里寫圖片描述

通過共有的外鍵Id_P,在兩表進行關(guān)聯(lián)。

inner join(內(nèi)連接),在兩張表進行連接查詢時,只保留兩張表中完全匹配的結(jié)果集


SELECT? ?p.LastName, p.FirstName, o.OrderNo? ? ?FROM Persons p? ?INNER JOIN? Orders o? ON p.Id_P=o.Id_P?

and? ?ORDER BY p.LastName

查詢結(jié)果集:?

這里寫圖片描述

此種連接方式Orders表中Id_P字段在Persons表中找不到匹配的(比如Id_P的值相等就是匹配),則不會列出來。注意:單純的select * from a,b是笛卡爾乘積。比如a表有5條數(shù)據(jù),b表有3條數(shù)據(jù),那么最后的結(jié)果有5*3=15條數(shù)據(jù)。

但是如果對兩個表進行關(guān)聯(lián):select * from a,b where a.id = b.id 意思就變了,此時就等價于:

select * from a inner join b on a.id = b.id。即就是內(nèi)連接。

這種寫法并不符合規(guī)范,可能只對某些數(shù)據(jù)庫管用,如sqlserver。推薦最好不要這樣寫。最好寫成inner join的寫法。

剛才講的是內(nèi)連接查詢 (select * from a join b on a.id = b.id) 與 關(guān)聯(lián)查詢 (select * from a , b where a.id = b.id)。

left join,在兩張表進行連接查詢時,會返回左表所有的行(即會顯示兩表共同擁有的數(shù)據(jù)與左表中兩表并不共同擁有的數(shù)據(jù)比如Bush,George),即使在右表中沒有匹配的記錄。


SELECT p.LastName, p.FirstName, o.OrderNo? ?FROM Persons p? ?LEFT JOIN Orders o ON p.Id_P=o.Id_P ORDER BY p.LastName

查詢結(jié)果如下:?

這里寫圖片描述

?
可以看到,左表(Persons表)中LastName為Bush的行的Id_P字段在右表(Orders表)中沒有匹配,但查詢結(jié)果仍然保留該行。

right join,在兩張表進行連接查詢時,返回右表所有的行,即使在左表中沒有匹配的記錄。

我們使用right join對兩張表進行連接查詢,sql如下:

SELECT p.LastName, p.FirstName, o.OrderNo? FROM Persons p? RIGHT JOIN Orders o? ON p.Id_P=o.Id_PORDER BY p.LastName


這里寫圖片描述

?
Orders表中最后一條記錄Id_P字段值為65,在左表中沒有記錄與之匹配,但依然保留。

full join,在兩張表進行連接查詢時,返回左表和右表中所有沒有匹配的行

SELECT p.LastName, p.FirstName, o.OrderNo? FROM Persons p? FULL JOIN Orders o? ON p.Id_P=o.Id_P? ?ORDER BY p.LastName

查詢結(jié)果如下:?

這里寫圖片描述

?
查詢結(jié)果是left join和right join的并集。




《海賊王》(SQL版)第一集:inner join、left join、right join的區(qū)別的評論 (共 條)

分享到微博請遵守國家法律
平江县| 屯留县| 东莞市| 南宫市| 安阳市| 泊头市| 马边| 盘山县| 东乡县| 南漳县| 保靖县| 浮山县| 哈巴河县| 新闻| 庆云县| 堆龙德庆县| 吉木萨尔县| 论坛| 伊春市| 慈溪市| 万年县| 遵义市| 乳山市| 博白县| 酒泉市| 海阳市| 海林市| 甘孜县| 定安县| 甘肃省| 十堰市| 沙雅县| 宜黄县| 荣昌县| 松原市| 法库县| 沈阳市| 潢川县| 运城市| 抚远县| 长寿区|