oracle内连接使用,Oracle中的联合查询-自然连接/外连接/内连接
自然連接
select *
from r1 natural [inner] join r2 natural [inner] join r3
where P;
select A1,A2
from r1
natural?[inner]?join
r2,r3?where r2.A=r3.B;
自然連接中,匹配關(guān)系(relation,表)中屬性(attribute,列)的屬性名稱相同的所有列,只保留所有屬性名稱都相同的元組(tuple,行),并顯示出來;列出屬性的順序:首先列出兩個關(guān)系中相同的屬性,然后列出那些只存在在第一個關(guān)系中的屬性,最后輸出只存在第二個關(guān)系中的屬性。
為了發(fā)揚自然連接的優(yōu)點,同時避免不必要的相等屬性帶來的危險,SQL允許用戶來指定需要那些列相等:
select *
from r1 [inner] join r2 using (attri_name);
注意事項:
1、如果在使用using關(guān)鍵字時,而且select的結(jié)果列表項中包含了using關(guān)鍵字所指明的那個關(guān)鍵字,那么請不要在select的結(jié)果列表項中對該關(guān)鍵字指明它屬于哪個表。
2、using中僅能使用一個列名。
3、natural join關(guān)鍵字和using關(guān)鍵字是互斥的,也就是說不能同時出現(xiàn)。
外連接
1.左外連接
//自然連接(左外連接)
select *
from student natural left [outer] join grade;
//另一種左外連接方式(非自然連接)
select *
from student A left [outer] join grade B on A.id=B.id;
等價于
select *
from student A,grade B
where A.id=B.id(+);
2.右外連接
//自然連接(右外連接)
select *
from student natural right [outer] join grade;
//另一種右外連接方式(非自然連接)
select *
from student A right [outer] join grade B
on A.id=B.id;
select *
from student A,grade B
where A.id(+)=B.id;
3.全外連接
//自然連接(全外連接)
select *
from student natural full [outer] join on grade;
//另一種全外連接
select *
from student A full [outer] join grade B
on A.id=B.id;
(+)操作符只能出現(xiàn)在where子句中
當(dāng)使用(+)操作符執(zhí)行外連接時,如果在where子句中包含有多個條件,則必須在所有條件中都包含( +)操作符
(+)操作符只適用于列,而不能用在表達(dá)式上。
(+)操作符不能與or和in操作符一起使用。
(+)操作符只能用于實現(xiàn)左外連接和右外連接,而不能用于實現(xiàn)完全外連接。
內(nèi)連接
當(dāng)省略outer和inner時,默認(rèn)為內(nèi)連接
select *
from student A [inner] join grade B on A.id=B.id;
等價于
select *
from student A,grade B where A.id=B.id;
而
select *
from student [inner] join grade using(id);
的結(jié)果類似于自然連接,不重復(fù)顯示id列~
總結(jié)
以上是生活随笔為你收集整理的oracle内连接使用,Oracle中的联合查询-自然连接/外连接/内连接的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux ping命令延时很高是什么原
- 下一篇: oracle 区分配,ORACLE自动段