Oracle中連線與加號( )的使用

2022-06-01 06:15:17 字數 1117 閱讀 6008

1、左外連線(left outer join/ left join)

left join是以左表的記錄為基礎的,左表的記錄將會全部表示出來,而右表只會顯示符合搜尋條件的記錄。右表記錄不足的地方均為null.

用(+)來實現, 這個+號可以這樣來理解: + 表示補充,即哪個表有加號,這個表就是匹配表。所以加號寫在右表,左表就是全部顯示,故是左連線。

例子:select a.*,b.bname from student_drb a, class_drb b where a.bno=b.bno(+)  -------------- 左連線,注意: 用(+) 就要用關鍵字where

2、右外連線(right outer join/ right join)

和left join的結果剛好相反,是以右表為基礎的, 顯示右表的所有記錄,在加上左表和右表匹配的結果。 左表不足的地方用null填充.

用(+)來實現, 這個+號可以這樣來理解: + 表示補充,即哪個表有加號,這個表就是匹配表。所以加號寫在左表,右表就是全部顯示,故是右連線。

例子:select a.*,b.bname from student_drb a, class_drb b where a.bno(+)=b.bno ---------------- 右連線,注意: 用(+) 就要用關鍵字where

3、全連線(full join)

左表和右表都不做限制,所有的記錄都顯示,兩表不足的地方用null 填充。 全外連線不支援(+)這種寫法。

4、等值查詢

例子:select a.*,b.bname from student_drb a, class_drb b where a.bno=b.bno

查詢出的結果是左表和右表中bno欄位相等的顯示出來。也即出來的結果肯定比左、右、全連線的結果要少或相等。

5、內聯接查詢   inner join  on (與等值查詢結果是一樣的),但效率要比等值查詢高,因為等值查詢是先笛卡爾積,再根據條件查詢。

6、交叉查詢cross join (如果需要條件則用where而不用on)

交叉查詢是用的笛卡爾積,效率較慢select * from student_drb cross join class_drb

等價於select * from student_drb,class_drb

ORACLE 資料庫 表連線 使用加號( )

資料庫中多表連線是經常用到的,主要有內連線和外連線。1.內連線 inner join select persons.lastname,persons.firstname,orders.orderno from persons inner join orders on persons.id p ord...

ORACLE中左連線與右連線

employees表 department表 select e.last name,e.department id,d.department name from employees e left outer join departments d on e.department id d.depart...

Python中盡量少用加號「 」連線字串的原因

在python中,string物件是定長物件,一旦建立,長度就不可變化,若是使用 號連線兩個字串,則會新開闢一段長度總和長度的記憶體,再將兩個字串memcpy進去。如果要連線n個string物件,則要進行n 1次記憶體申請和拷貝。string concat register pystringobje...