久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么在SQL語句中使用JOIN連接數據庫

145次閱讀
沒有評論

共計 2001 個字符,預計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章給大家介紹怎么在 SQL 語句中使用 JOIN 連接數據庫,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

通常有以下幾種連接方式:

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

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

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

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

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

怎么在 SQL 語句中使用 JOIN 連接數據庫 怎么在 SQL 語句中使用 JOIN 連接數據庫

當 JOIN 或是 INNER JOIN 時,

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

或者

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

結果集如下

怎么在 SQL 語句中使用 JOIN 連接數據庫

當 LEFT JOIN 時,

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

結果集如下

怎么在 SQL 語句中使用 JOIN 連接數據庫

當 RIGHT JOIN 時,

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

結果集如下

怎么在 SQL 語句中使用 JOIN 連接數據庫

當 FULL JOIN 時,

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

結果集如下

怎么在 SQL 語句中使用 JOIN 連接數據庫

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

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

where 條件是在臨時表生成好后再對臨時表進行過濾的條件,這時已經沒有 left join 的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉。如下圖,

on 條件為黃色部分

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 連接數據庫

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 連接數據庫

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

1. 自然連接(natural join)

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

select * from employee natural join department;

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

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

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 連接數據庫

3. 外連接(outer join)

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

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

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

怎么在 SQL 語句中使用 JOIN 連接數據庫

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

怎么在 SQL 語句中使用 JOIN 連接數據庫

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

怎么在 SQL 語句中使用 JOIN 連接數據庫

4. 交叉連接(cross join)

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

select * from TableA cross join TableB;

關于怎么在 SQL 語句中使用 JOIN 連接數據庫就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-16發表,共計2001字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 东丽区| 盘山县| 黔东| 收藏| 容城县| 疏附县| 浦城县| 唐海县| 扎赉特旗| 巨野县| 西和县| 山西省| 万年县| 天气| 额济纳旗| 黄浦区| 开化县| 松原市| 前郭尔| 同仁县| 石嘴山市| 高密市| 加查县| 潞城市| 鸡西市| 广元市| 迁安市| 西青区| 图木舒克市| 太仓市| 焉耆| 叶城县| 中宁县| 奉化市| 司法| 沈丘县| 莱州市| 临泽县| 天全县| 清苑县| 高尔夫|