SQL 左外連線,右外連線,全連線,內連線,自連線

2021-09-01 17:45:53 字數 1949 閱讀 9950

-- 左連線(返回包括左表中的所有記錄和右表中聯結字段相等的記錄 )

select a.rid, a.picname, b.trpid, b.rid, b.picname, b.picurl

from tc_restaurants a

left join tc_restaurants_pictures b on a.rid = b.rid

-- 右鏈結( 返回包括右表中的所有記錄和左表中聯結字段相等的記錄)

select a.rid, a.picname, b.trpid, b.rid, b.picname, b.picurl

from tc_restaurants_pictures b

right join tc_restaurants a on a.rid = b.rid

-- 等值連線(只返回兩個表中聯結字段相等的行)

select a.rid, a.picname, b.trpid, b.rid, b.picname, b.picurl

from tc_restaurants_pictures b

inner join tc_restaurants a on a.rid = b.rid

-- 全連線(返回兩個表中所有資訊)

select a.rid, a.picname, b.trpid, b.rid, b.picname, b.picurl

from tc_restaurants_pictures b

full join tc_restaurants a on a.rid = b.rid

-- 等值連線(只返回兩個表中聯結字段相等的行)

select a.rid, a.picname, b.trpid, b.rid, b.picname, b.picurl

from tc_restaurants a, tc_restaurants_pictures b

where a.rid = b.rid

-- 自連線(比如一張表中有兩個字段,乙個欄位是員工編號,乙個欄位是領導編號,

-- 員工字段編號中包含領導字段編號,所以可以當做兩張表,做自關聯,只要別名不一樣就ok了)

select worker.ename, boss.ename

from emp worker, emp boss

where worker.mgr = boss.empno

and worker.ename = 'ford';

內連線(等值連線和自然連線)    

oracle natural join(自然連線)

雖然natural join(自然連線)實際上的用的比較少,但實際上這個連線是非常有用的,若能經常使用一下,實際上是非常方便的。

自然連線是在兩張表中尋找那些資料型別和列名都相同的字段,然後自動地將他們連線起來,並返回所有符合條件按的結果。

來看一下自然連線的例子。

select emp.ename,dept.dname

from emp natural join dept;

這裡我們並沒有指定連線的條件,實際上oracle為我們自作主張的將,emp中的deptno和dept中的deptno做了連線。

也就是實際上相當於

select emp.ename,dept.dname

from emp join dept on emp.deptno = dept.deptno;

因為這兩張表的這兩個欄位deptno的型別個名稱完全相同。所以使用natural join時被自然的連線在一起了。

另外:1.如果做自然連線的兩個表的有多個欄位都滿足有相同名稱個型別,那麼他們會被作為自然連線的條件。

2.如果自然連線的兩個表僅是欄位名稱相同,但資料型別不同,那麼將會返回乙個錯誤。

3.由於oracle中可以進行這種非常簡單的natural join,我們在設計表時,應該盡量在不同表中具有相同含義的字段使用相同的名字和資料型別。以方便以後使用natural join

SQL 左外連線,右外連線,全連線,內連線

例子1 a表 id name b表 id job parent id 1 張3 1 23 1 2 李四 2 34 2 3 王武 3 34 4 a.id同parent id 存在 關係內連線 select a.b.from a inner join b on a.id b.parent id 結果是 ...

SQL之全外連線,左外連線,右外連線,內連線

1.內連線 內聯接使用比較運算子 使用像 或 之類的比較運算子 根據每個表共有的列的值匹配兩個表中的行,根據這兩張表中相同列的條件,得出其交集。沒有inner join,形成的中間表為兩個表的笛卡爾積 select from customers c,orders o where c.id o.cus...

內連線,左外連線,右外連線,全連線

1.內連線我們通常用的連線,表表連線只顯示交集資料 2.外連線分左外連線 table1 left outer join on table2 和右外連線table1 right outer join on table2 和全連線 table1 full outer join on table2 2.1...