sql語句的內外左右連接都是什么
1.內連接:取的兩個表的(有能連接的字段)的交集,即字段相同的。利用內連接可獲取兩表的公共部分的記錄,
select * from A,B where *=*d
與 Select * from A JOIN B ON *=*d的運行結果是一樣的。
2.外連接:左右連接。
外連接分為兩種,一種是左連接(Left JOIN)和右連接(Right JOIN)
(1)左連接(Left JOIN):語句如下: select * from A Left JOIN B ON *=*d A的字段全有,查詢出來在結果集的左邊。
(2)右連接(Right JOIN):語句如下:select * from A Right JOIN B ON *=*d
左右連接的sql語句實例:(+),中間函數NVL給空值賦值。
sql="select name,id,area_name from (select *,*,NVL(*_name,'未分配') area_name "+
"from department a, area_department b,area_table c "+
"where *= b.f_branch_id(+) "+
"and *_code= *_code(+)) d where 1=1 ";
SQL語句基礎中的外部連接是指什么
如果我們想要列出一個表格中每一筆的資料,無論它的值在另一個表格中有沒有出現,那該怎么辦呢?在這個時候,我們就需要用到 SQL OUTER JOIN (外部連接) 的指令。
外部連接的語法是依數據庫的不同而有所不同的。舉例來說,在 Oracle 上,我們會在 WHERE 子句中要選出所有資料的那個表格之后加上一個 "(+)" 來代表說這個表格中的所有資料我們都要。
假設我們有以下的兩個表格: Store_Information 表格 store_namesalesdate Los Angeles$1500jan-05-1999 San Francisco$300jan-08-1999 Boston$700jan-08-1999 Geography 表格 region_namestore_name EastBoston EastNew York WestLos Angeles WestSan Diego 我們需要知道每一間店的營業額。 如果我們用一個普通的連接,我們將會漏失掉 'New York'這個店,因為它并不存在于 Store_Information 這個表格。
所以,在這個情況下,我們需要用外部連接來串聯這兩個表格: SELECT A1。store_name, SUM(A2。
Sales) SALES FROM Georgraphy A1, Store_Information A2 WHERE A1。store_name = A2。
store_name (+) GROUP BY A1。store_name 我們在這里是使用了 Oracle 的外部連接語法。
結果: store_name SALES Boston $700 New York Los Angeles $1800 San Diego $250 請注意: 當第二個表格沒有相對的資料時,SQL 會傳回 NULL 值。在這一個例子中, 'New York' 并不存在于 Store_Information 表格,所以它的 "SALES" 欄位是 NULL。
數據庫 外連接的意思
對于外連接,Oracle中可以使用“(+)”來表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面將配合實例一一介紹。
1. LEFT OUTER JOIN:左外關聯
SELECT *_name, *ment_id, *ment_name
FROM employees e
LEFT OUTER JOIN departments d
ON (*ment_id = *ment_id);
等價于
SELECT *_name, *ment_id, *ment_name
FROM employees e, departments d
WHERE *ment_id=*ment_id(+);
結果為:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄。
2. RIGHT OUTER JOIN:右外關聯
SELECT *_name, *ment_id, *ment_name
FROM employees e
RIGHT OUTER JOIN departments d
ON (*ment_id = *ment_id);
等價于
SELECT *_name, *ment_id, *ment_name
FROM employees e, departments d
WHERE *ment_id(+)=*ment_id;
結果為:所有員工及對應部門的記錄,包括沒有任何員工的部門記錄。
3. FULL OUTER JOIN:全外關聯
SELECT *_name, *ment_id, *ment_name
FROM employees e
FULL OUTER JOIN departments d
ON (*ment_id = *ment_id);
結果為:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄和沒有任何員工的部門記錄。