內連線 外連線與子查詢

2022-07-26 14:33:11 字數 2132 閱讀 6305

一、內連線

1、內連線與子查詢結果一致,但內連線效率高

select a.dept_name, a.id, b.prem_codes, c.scy_lvl

from t_da_mgr_org  a

join  t_da_org_scy_rel b

on a.id = b.dept_id

join t_da_scy_lvl c

on b.scy_lvl = c.scy_lvl

select a.dept_name, a.id, b.prem_codes, c.scy_lvl

from t_da_mgr_org a, t_da_org_scy_rel b, t_da_scy_lvl c

where  a.id = b.dept_id

and b.scy_lvl = c.scy_lvl

2、單行子查詢 ,基於集合測試的巢狀子查詢  where =、>、 >= 、= 、 <、<=、between and、and、or、in

select * from stuinfo t

where t.classno in

(select b.classno  from class b  where b.classname = '資訊科學2班(18)'   );

3、多行子查詢 ,要求子查詢只能返回單個值    any、all、some 

select * from stuinfo t where t.age > any(26,27,28); ---年齡只要大於當中子查詢的最小值26歲即可    select * from stuinfo t where t.age >  (select min(age)from stuinfo)

select * from stuinfo t where t.age >all (26,27,28); ---年齡必須大於子查詢當中的最大值28歲才可以  select * from stuinfo t where t.age >  (select max(age)from stuinfo)

4、為計算字段使用子查詢

select cust_name,

cust_state,

(select count(*) from orders where orders.id = customers.cust_id)  as  orders

from customers

二、外連線

1、左外連線

select a.dept_name, a.id, b.prem_codes, c.scy_lvl

from t_da_mgr_org a

left join t_da_org_scy_rel b

on a.id = b.dept_id

left join t_da_scy_lvl c

on b.scy_lvl = c.scy_lvl

select a.dept_name, a.id, b.prem_codes, c.scy_lvl

from t_da_mgr_org a, t_da_org_scy_rel b, t_da_scy_lvl c

where a.id = b.dept_id(+)

and b.scy_lvl = c.scy_lvl(+)

2、右外連線

select a.dept_name, a.id, b.prem_codes, c.scy_lvl

from t_da_mgr_org a

right join t_da_org_scy_rel b

on a.id = b.dept_id

right join t_da_scy_lvl c

on b.scy_lvl = c.scy_lvl

select a.dept_name, a.id, b.prem_codes, c.scy_lvl

from t_da_mgr_org a, t_da_org_scy_rel b, t_da_scy_lvl c

where a.id(+) = b.dept_id

and b.scy_lvl (+)= c.scy_lvl

3、全外連線

select a.*, b.stuid, b.stuname

from 表1 a

full join 表2  b

on a.stuid = b.stuid;

內連線與外連線

本篇文章只是簡單介紹一下資料庫中的內連線和外連線。舉最簡單的兩個表的例子,有表a和表b,表a如下 aid主鍵,自增 表b如下 bid主鍵,自增 有sql基本知識的人都知道,兩個表要做連線,就必須有個連線字段,從上表中的資料可以看出,在a表中的aid和b表中的bnameid就是兩個連線字段。現在先說內...

內連線與外連線

最近一段時間找工作,對以往的知識進行了複習,以下是本人對資料庫中表連線的總結 連線 連線是指將關聯式資料庫中的兩個表根據內容一定的條件連線成乙個表 連線型別 內連線與外連線 a 內連線 又稱等值連線,如 select a.b.from tablea a,tableb b where a.id b.i...

內連線與外連線

圖3 連線關係圖 現在我們對內連線和外連線一一講解。1.內連線 利用內連線可獲取兩表的公共部分的記錄,即圖3的記錄集c 語句如下 select from a join b on a.aid b.bnameid 執行結果如下圖4所示 圖4 內連線資料 其實select from a,b where a...