激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

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

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

2020-05-28 15:19乘風踏西行 Sql Server

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

為了從兩個表中獲取數據,我們有時會用JOIN將兩個表連接起來。通常有以下幾種連接方式:

JOIN  or  INNER JOIN(內連接) : 這兩個是相同的,要求兩邊表同時有對應的數據,返回行,任何一邊缺失數據就不顯示。

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

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

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

如例,有grade表(課程號sn,分數scroe,學號id),student表(學號id,學生姓名name),要查詢學生的姓名和成績

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

當JOIN或是INNER JOIN時,

?
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

結果集如下

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

當LEFT JOIN時,

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

結果集如下

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

當RIGHT JOIN時,

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

結果集如下

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

當FULL JOIN時,

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

結果集如下

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

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

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

where條件是在臨時表生成好后再對臨時表進行過濾的條件,這時已經沒有left 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)

自然連接將表中具有相同名稱的列自動進行匹配,自然連接不必指定任何同等連接條件也不能認為指定哪些列需要被匹配,自然連接得到的結果表中,兩表中名稱相同的列只出現一次。

?
1
select * from employee natural join department;

2.內連接(inner join):產生的結果是A和B的交集(相同列里面的相同值)

內連接查詢能將左表和右表中能關聯起來的數據連接后返回,返回的結果就是兩個表中所有相匹配的數據。

?
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)

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

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

Full Join:產生的結果是A和B的并集(如果沒有相同的值會用null作為值)

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

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


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

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

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

4.交叉連接(cross join)

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

?
1
select * from TableA cross join TableB;

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

總結

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品美女久久久免费 | 精品99在线视频 | 免费在线观看成年人视频 | 成人免费观看在线视频 | 成人午夜久久 | 国产高潮失禁喷水爽到抽搐视频 | 最新欧美精品一区二区三区 | 国产精品999在线观看 | 久色精品视频 | 久久99精品国产自在现线 | 97伦理 | 久久精品中文字幕 | 久久久日韩av免费观看下载 | 欧美视频不卡 | 久久久无码精品亚洲日韩按摩 | 97超碰资源站 | 久久手机在线视频 | 午夜精品福利视频 | 人成免费a级毛片 | 日韩毛片网站 | 女人久久久www免费人成看片 | 激情视频在线播放 | 黄色av网站在线观看 | 欧美黑人伦理 | 中文字幕观看 | 日本精品久久久一区二区三区 | 国产三级精品最新在线 | 黄网站在线免费看 | 久久成人激情视频 | 蜜桃欧美性大片免费视频 | 亚洲小视频在线播放 | 久久久久久久久久一本门道91 | 欧美一级无毛 | 久夜草| 久久精品中文字幕一区 | 国产精品免费一区二区三区都可以 | 久久在草 | 国产99久久久久久免费看 | 国产精品一区二区三区在线 | 一区二区久久 | 99精品视频在线 |