連線多個表時使用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和...