學生表
學號 姓名
0001 小李
0002 小王
0003 小朱
0004 小黃
選課表
學號 課程
0001 高數
0002 線數
0004 英語
0005 電腦
--左(外)聯接
select 學生表.*, 選課表.課程
from 學生表, 選課表
where 學生表.學號 = 選課表.學號(+)
查詢的結果是:
學號 姓名 課程
0001 小李 高數
0002 小王 線數
0003 小朱
0004 小黃 電腦
學生表.學號 = 選課表.學號(+)表示
學生表(也就是左邊的表)所有行都會被返回
即使選課表中沒有相應的行與學生表中的行匹配
--右(外)聯接
select 學生表.*, 選課表.課程
from 學生表, 選課表
where 學生表.學號(+) = 選課表.學號
查詢的結果是:
學號 姓名 課程
0001 小李 高數
0002 小王 線數
0004 小黃 電腦
0005 電腦
學生表.學號(+) = 選課表.學號表示
選課表(也就是右邊的表)所有行都會被返回
即使學生表中沒有相應的行與選課表中的行匹配
不同的資料庫系統對外聯接有不同的表示
有些根本不相容
如(還是以上例為基礎)
ms sql server 外聯接的sql寫法
--左(外)聯接 - 第一種寫法
select 學生表.*, 選課表.課程
from 學生表, 選課表
where 學生表.學號 *= 選課表.學號
--左(外)聯接 - 第二種寫法
select 學生表.*, 選課表.課程
from 學生表 left outer join 選課表 on 學生表.學號 = 選課表.學號
--右(外)聯接 - 第一種寫法
select 學生表.*, 選課表.課程
from 學生表, 選課表
where 學生表.學號 =* 選課表.學號
--右(外)聯接 - 第二種寫法
select 學生表.*, 選課表.課程
from 學生表 right outer join 選課表 on 學生表.學號 = 選課表.學號
--注:在ms sql server中,outer關健字可以省略
access 外聯接的sql寫法
--左(外)聯接 - 第二種寫法
select 學生表.*, 選課表.課程
from 學生表 left outer join 選課表 on 學生表.學號 = 選課表.學號
--右(外)聯接 - 第二種寫法
select 學生表.*, 選課表.課程
from 學生表 right outer join 選課表 on 學生表.學號 = 選課表.學號
--注:在access中,關健字outer不可以省略
oracle
外聯接的sql寫法
--左(外)聯接 - 第一種寫法
select 學生表.*, 選課表.課程
from 學生表, 選課表
where 學生表.學號 = 選課表.學號(+)
--右(外)聯接 - 第一種寫法
select 學生表.*, 選課表.課程
from 學生表, 選課表
where 學生表.學號(+) = 選課表.學號
oracle直到9i才支援sql-92外聯接語法
left (outer)join和right (outer) join
和ms sql server一樣
關健字outer是可以省略的top
資料庫查詢左右連線
假設有如下表 乙個為投票主表,乙個為投票者資訊表 記錄投票人ip及對應投票型別,左右連線實際說是我們聯合查詢的結果以哪個表為準 1 如右接連 right join 或 right outer join 我們以右邊voter表為準,則左表 votemaster 中的記錄只有當其id在右邊 voter ...
資料庫外連線(左 右 全) 內連線
1sql指令碼 0表資料 1左外連線 應用 結果 2右外連線 應用 結果 3全外連線 測試sql 4內連線 測試sql 結果 1 sql指令碼 set foreign key checks 0 table structure for clazz drop table if exists clazz ...
資料庫表左右外內連線查詢
資料表的連線有 1 內連線 自然連線 只有兩個表相匹配的行才能在結果集中出現 2 外連線 包括 1 左外連線 左邊的表不加限制 2 右外連線 右邊的表 不加限制 3 全外連線 左右兩表都不加限制 3 自連線 連線發生在一張基表內 size size x small s size size x sma...