一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - Sql Server - SQL語句中不同的連接JOIN及join的用法

SQL語句中不同的連接JOIN及join的用法

2020-05-28 15:19乘風(fēng)踏西行 Sql Server

為了從兩個(gè)表中獲取數(shù)據(jù),我們有時(shí)會(huì)用JOIN將兩個(gè)表連接起來。本文給大家較詳細(xì)的介紹了SQL語句中不同的連接JOIN及join的用法,感興趣的朋友跟隨小編一起看看吧

為了從兩個(gè)表中獲取數(shù)據(jù),我們有時(shí)會(huì)用JOIN將兩個(gè)表連接起來。通常有以下幾種連接方式:

JOIN  or  INNER JOIN(內(nèi)連接) : 這兩個(gè)是相同的,要求兩邊表同時(shí)有對(duì)應(yīng)的數(shù)據(jù),返回行,任何一邊缺失數(shù)據(jù)就不顯示。

LEFT JOIN(左外連接):即使右邊的表中沒有匹配,也從左表返回所有的行。

RIGHT JOIN(右外連接):即使左邊的表中沒有匹配,也從右表返回所有的行。

FULL JOIN(全外連接):只要其中一個(gè)表中存在匹配就返回行。

如例,有g(shù)rade表(課程號(hào)sn,分?jǐn)?shù)scroe,學(xué)號(hào)id),student表(學(xué)號(hào)id,學(xué)生姓名name),要查詢學(xué)生的姓名和成績

SQL語句中不同的連接JOIN及join的用法 SQL語句中不同的連接JOIN及join的用法

當(dāng)JOIN或是INNER JOIN時(shí),

?
1
SELECT s.name,g.sn,g.score from student as s join grade as g on s.id = g.id

或者

?
1
SELECT s.name,g.sn,g.score from student as s inner join grade as g on s.id = g.id

結(jié)果集如下

SQL語句中不同的連接JOIN及join的用法

當(dāng)LEFT JOIN時(shí),

?
1
SELECT s.name,g.sn,g.score from student as s left join grade as g on s.id = g.id

結(jié)果集如下

SQL語句中不同的連接JOIN及join的用法

當(dāng)RIGHT JOIN時(shí),

?
1
SELECT s.name,g.sn,g.score from student as s right join grade as g on s.id = g.id

結(jié)果集如下

SQL語句中不同的連接JOIN及join的用法

當(dāng)FULL JOIN時(shí),

?
1
SELECT s.name,g.sn,g.score from student as s full join grade as g on s.id = g.id

結(jié)果集如下

SQL語句中不同的連接JOIN及join的用法

注意,兩個(gè)表連接時(shí)用on,在使用left join(right join或full join)時(shí),on與where的區(qū)別是:

on條件是在生成臨時(shí)表時(shí)使用的條件,它不管on中的條件是否為真,都會(huì)返回左邊表中的記錄

where條件是在臨時(shí)表生成好后再對(duì)臨時(shí)表進(jìn)行過濾的條件,這時(shí)已經(jīng)沒有l(wèi)eft join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉。如下圖,

on條件為黃色部分

?
1
SELECT s.name,g.sn,g.score from student as s left join grade as g on s.id = g.id and score =90

SQL語句中不同的連接JOIN及join的用法

?
1
SELECT s.name,g.sn,g.score from student as s left join grade as g on s.id = g.id where score =90

SQL語句中不同的連接JOIN及join的用法

下面看下SQL中join的各種用法

1.自然連接(natural join)

自然連接將表中具有相同名稱的列自動(dòng)進(jìn)行匹配,自然連接不必指定任何同等連接條件也不能認(rèn)為指定哪些列需要被匹配,自然連接得到的結(jié)果表中,兩表中名稱相同的列只出現(xiàn)一次。

?
1
select * from employee natural join department;

2.內(nèi)連接(inner join):產(chǎn)生的結(jié)果是A和B的交集(相同列里面的相同值)

內(nèi)連接查詢能將左表和右表中能關(guān)聯(lián)起來的數(shù)據(jù)連接后返回,返回的結(jié)果就是兩個(gè)表中所有相匹配的數(shù)據(jù)。

?
1
2
select * from TableA as A inner join TableB B on A.PK = B.PK;
select * from TableA as A inner join TableB B on A.PK > B.PK;


SQL語句中不同的連接JOIN及join的用法

3.外連接(outer join)

內(nèi)連接是要顯示兩張表的內(nèi)存,而外連接不要求如此,外連接可以依據(jù)連接表保留左表,右表或全部表的行為而分為左外連接右外連接和全連接。

?
1
select * from TableA as A left(right/full) join TableB as B on A.PA = B.PK;

Full Join:產(chǎn)生的結(jié)果是A和B的并集(如果沒有相同的值會(huì)用null作為值)

SQL語句中不同的連接JOIN及join的用法

Left Join:產(chǎn)生表A的完全集,而B表中匹配的則有值(沒有匹配的則以null值取代)


SQL語句中不同的連接JOIN及join的用法

Right Join:產(chǎn)生表B的完全集,而A表中匹配的則有值(沒有匹配的則以null值取代)

SQL語句中不同的連接JOIN及join的用法

4.交叉連接(cross join)

又稱笛卡爾連接,交叉連接返回兩個(gè)集合的笛卡爾積。

?
1
select * from TableA cross join TableB;

參考鏈接:http://mazhuang.org/2017/09/11/joins-in-sql/

總結(jié)

以上所述是小編給大家介紹的SQL語句中不同的連接join及join的用法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

原文鏈接:https://www.cnblogs.com/goodboyaistudy/archive/2018/10/25/9844486.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 九九热视频免费 | 美女和男生搞基 | 久青草国产97香蕉在线视频 | 短篇同学新婚h系列小说 | 久久草香蕉频线观 | 黑人biglackon10十 | 精品免费国产 | a毛片久久免费观看 | 国产亚洲玖玖玖在线观看 | 91碰| 国产欧美一区二区三区免费看 | 国产精品久久久久jk制服 | 国产三级精品91三级在专区 | 欧美成人一区二区 | 娇妻被又大又粗又长又硬好爽 | 9191精品国产观看 | 国产老肥熟xxxx | 免费看国产一级特黄aa大片 | 亚洲精品日韩专区在线观看 | 狠狠香蕉| 天天天天天天天操 | 免费一区 | 91精品国产美女福到在线不卡 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 久久国产精品永久免费网站 | 亚洲国产精品自在自线观看 | 亚洲精品一区二区三区中文字幕 | 免费观看一级一片 | 日韩去日本高清在线 | 国产精品一久久香蕉产线看 | 欧美日韩高清观看一区二区 | 日本一区二区在线不卡 | 99久久国语露脸精品国产 | 好男人影视社区www在线观看 | 亚洲国产视频网站 | 亚洲第一区se | 日本不卡高清免费v日本 | 久久视频这里只精品99热在线观看 | 新影音先锋男人色资源网 | 久草在线草a免费线看 | 教师波多野结衣在线播放 |