集合運算
-
INTERSECT(交集),回傳兩個查詢共有的記錄,
-
UNION ALL(并集重復),回傳各個查詢的所有記錄,包括重復記錄,
-
UNION(并集不重復),回傳各個查詢的所有記錄,不包括重復記錄 ,
-
MINUS(補集),回傳第一個查詢的記錄減去第二個查詢的記錄之后剩余的記錄,
-- 交集
select * from stuinfo1
intersect
select * from stuinfo2;
-- 并集重復
select * from stuinfo1
union all
select * from stuinfo2;
-- 并集不重復
select * from stuinfo1
union
select * from stuinfo2;
-- 補集
select * from stuinfo1
minus
select * from stuinfo2;
內連接
兩張表通過某個欄位進行內關聯,查詢結果是通過該欄位按關系運算子匹配出的資料行,
select a.stuid, a.stuname, a.classno,
b.classno, b.classname, b.monitorid, b.monitorname
from stuinfo a, class b
where a.classno = b.classno;
外連接
-
left join:等價于 left outer join,回傳左表中的所有記錄和右表中聯結欄位相等的記錄,
-
right join:等價于 right outer join,回傳右表中的所有記錄和左表中聯結欄位相等的記錄,
-
full join:等價于 full outer join,查詢結果等于左外連接和右外連接的和,
--左外連接(stuinfo1表中資料都保留,stuinfo2不在stuinfo1中存在的欄位為null值)
select a.*, b.stuid, b.stuname
from stuinfo1 a left join stuinfo2 b
on a.stuid = b.stuid;
--左外連接另外一種寫法
select a.*, b.stuid, b.stuname
from stuinfo1 a,stuinfo2 b
where a.stuid = b.stuid(+);
--右外連接(stuinfo2表中資料都保留,stuinfo1不在stuinfo2中存在的欄位為null值)
select a.*, b.stuid, b.stuname
from stuinfo1 a right join stuinfo2 b
on a.stuid = b.stuid;
--右外連接另外一種寫法
select a.*, b.stuid, b.stuname
from stuinfo1 a,stuinfo2 b
where a.stuid(+)=b.stuid;
--全外連接(stuinfo1、stuinfo2表中資料都保留,stuinfo1不在stuinfo2存在的學生相關欄位為null值,stuinfo2不在stuinfo1存在的學生相關欄位為null值)
select a.*, b.stuid, b.stuname
from stuinfo1 a full join stuinfo2 b
on a.stuid = b.stuid;
偽列
- ROWID:回傳資料在資料檔案中的物理地址,ROWID 值可以唯一的標識表中的一行,
- ROWNUM:標識查詢結果集的順序,第一行標識為1,后面依次遞增,
select t.*, t.rowid from stuinfo t;
select t.*, t.rowid from stuinfo t where t.rowid='AAAShjAAEAAAAEFAAD';
select t.*, rownum from stuinfo t;
-- 回傳學生資訊表中學生年齡最低的前四位同學
select * from (
select t.*, rownum from stuinfo t order by t.age asc
) where rownum <= 4;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/11264.html
標籤:Oracle
