SQL 裡的各種連線,你了解了嗎?

2021-09-14 03:02:10 字數 1466 閱讀 9654

連線多個表時使用join關鍵字,on為連線條件;

連線可用於替代子查詢,速度一般比子查詢更快;

自連線就是連線的表的為自身自然連線(natural join)與內連線相似,但會將同名列(且值相同)合併,不放入查詢結果中

select a.value, b.value from table_a a natural join table_b b on a.id = b.id;外連線

外連線就是保留未關聯的行,即使沒有匹配成功也保留該行。左外連線保留左表未匹配的行,而右表未匹配的行置為null,右連線則反之。全連線是保留左右表的所有行,未匹配的置為null

+ 左外連線

+ 右外連線

+ 全外連線

select * from student t1 left join course t2 on t1.student_id = t2.student_id;

-- 查詢所有學生的課程資訊,包括還沒有課程資訊的學生

student表:

course表:

-- 查詢所有學生的課程資訊,不 包括還沒有課程資訊的學生

使用上面內連線語句查詢結果:

上圖中:「小靜,小五,小六等並不符合連線條件,所以無記錄

select * from student t1 left join course t2 on t1.student_id = t2.student_id;

-- 查詢所有學生的課程資訊,包括還沒有課程資訊的學生

使用上面左連線語句查詢結果:

上圖中:「小靜,小五,小六等並不符合連線條件,但仍然保留左表(student)記錄

了解了解一下SQLSERVER裡的鬼影記錄

鬼影記錄也叫 幻影記錄 虛影記錄 英文名叫 ghost record 關於 truncate table有沒有使用鬼影記錄的 會出現鬼影記錄的兩種情況 1 聚集索引表 2 使用了快照隔離級別的堆表 為什麼在聚集索引的表裡會出現鬼影記錄,大家知道有聚集索引的表,裡面資料頁會用雙向鍊錶連線起來,如果馬上...

sql的各種連線查詢

以下均以oracle scott賬號自帶的資料庫為例 方括號裡的東西表示有和沒有效果是一樣的 表內查詢 自連線 查詢所有經理所對應的雇員 sql 86 select manager.ename as manager,worker.ename as worker from emp manager,em...

sql的各種join連線

1 select from tablea inner join tableb 2 on tablea.name tableb.name 3id name id name 4 51 pirate 2 pirate 63 ninja 4 ninja78 9inner join 10產生的結果集中,是a和...