文章分類(lèi):數據庫
一、內連接和外連接
內連接用于返回滿(mǎn)足連接條件的記錄;而外連接則是內連接的擴展,它不僅會(huì )滿(mǎn)足連接條件的記錄,而且還會(huì )返回不滿(mǎn)足連接條件的記錄,語(yǔ)法如下:
select table1.column,table2.column from table1 [inner|left|right|full]join table2 on table1.column=table2.column;
inner join表示內連接、left join表示左外連接、right join表示右外連接、full join表示全連接;on用于指定連接條件。
注意:如果使用form內、外連接,則必須使用on操作符指定連接條件;如果使用(+)操作符連接,則必須使用where指定連接條件。
1、內連接
內連接查詢(xún)返回滿(mǎn)足條件的所有記錄,默認情況下沒(méi)有指定任何連接則為內連接,例如:
select t1.name,t2.name from cip_temps t1 inner join cip_tmp t2 on t1.ID=t2.id;
2、左外連接
左外連接查詢(xún)不僅返回滿(mǎn)足條件的所有記錄,而且還會(huì )返回不滿(mǎn)足連接條件的連接操作符左邊表的其他行,例如:
select t1.name,t2.name from cip_temps t1 left join cip_tmp t2 on t1.ID=t2.id;
3、右外連接
右外連接查詢(xún)不僅返回滿(mǎn)足調價(jià)的所有記錄,而且還會(huì )返回不滿(mǎn)足連接條件的連接操作符右邊表的其他行,例如:
select t1.name,t2.name from cip_temps t1 right join cip_tmp t2 on t1.ID=t2.id;
4、全連接
全連接查詢(xún)不僅返回滿(mǎn)足調價(jià)的所有記錄,而且還會(huì )返回不滿(mǎn)足連接條件的其他行,例如:
select t1.name,t2.name from cip_temps t1 full join cip_tmp t2 on t1.ID=t2.id;
5、(+)操作符
在oracle9i之前,當執行外連接時(shí),都是使用連接操作符(+)來(lái)完成的,盡管可以使用操作符(+)執行外連接操作,但是oracle9i開(kāi)始oracle建議使用outer join執行外連接,使用(+)操作符執行外連接的語(yǔ)法如下:
select table1.column,table2.column from table1,table2 where table1.column(+)=table2.column;
注意:
(1)、使用(+)操作符執行左外連接
當使用左外連接時(shí),不僅會(huì )返回滿(mǎn)足連接條件的所有行,而且還會(huì )返回不滿(mǎn)足連接條件的左邊邊的其他行。因為(+)操作符要放到行數較少的一端,所以在where子句中應當將該操作符放到右邊表的一端,示例如下:
select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID=t2.id(+);
(2)、使用(+)操作符執行右外連接
當使用右外連接時(shí),不僅會(huì )返回滿(mǎn)足連接條件的所有行,而且還會(huì )返回不滿(mǎn)足連接條件的右邊邊的其他行。因為(+)操作符要放到行數較少的一端,所以在where子句中應當將該操作符放到左邊表的一端,示例如下:
聯(lián)系客服