聯接操作
說明
cross join
這是兩個表的交叉乘積。它與舊式聯接中未指定where 子句而返回的行相同。在oracle 中,這種型別聯接稱為笛卡爾聯接。
inner
這種聯接指定,所有內部行均要返回。丟棄任何不匹配的行。這和標準的oracle 表聯接相同。
left[outer]
這種型別的聯接指定,所有左表的外部行均要返回,即使沒找到匹配的列,也就如此。這和oracle 外部聯接(+) 的操作類似。
right[outer]
這種型別的聯接指定,所有右表的外部行均要返回,即使沒找到匹配的列,也是如此。這和oracle 外部聯接(+) 的操作類似。
full [outer]
如果兩個表中的一行不符合選擇標準,則指定將這一行加到結果集中,並且將其對應於另一表的輸出列設為null。這和將oracle 外部聯接運算子放在「=」號兩邊(col1(+)=col2(+)) 的效果是一樣的,但後者在oracle 中是不允許的。
在oracle 中使用外部聯接時,外部聯接運算子(+) 通常放在該聯接的子列(外來鍵)旁邊。(+) 標識了具有較少唯一值的列。情況一般是這樣,除非外來鍵允許空值,在這種情況下,(+) 被放在父(primary key 或unique 約束)列上。(+) 不能放在等號(=) 兩邊。
一般的相等連線:
select * from a, b where a.id = b.id;
這個就屬於內連線。
對於外連線:
oracle中可以使用「(+) 」來表示,9i可以使用left/right/full outer join
left outer join:左外關聯
select e.last_name, e.department_id, d.department_name
from employees e
left outer join departments d
on (e.department_id = d.department_id);
等價於
select e.last_name, e.department_id, d.department_name
from employees e, departments d
where e.department_id=d.department_id(+)
結果為:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄。
right outer join:右外關聯
select e.last_name, e.department_id, d.department_name
from employees e
right outer join departments d
on (e.department_id = d.department_id);
等價於
select e.last_name, e.department_id, d.department_name
from employees e, departments d
where e.department_id(+)=d.department_id
結果為:所有員工及對應部門的記錄,包括沒有任何員工的部門記錄。
full outer join:全外關聯
select e.last_name, e.department_id, d.department_name
from employees e
full outer join departments d
on (e.department_id = d.department_id);
結果為:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄和沒有任何員工的部門記錄。
在oracle pl-sql中,左連線和右連線以如下方式來實現
檢視如下語句:
select emp_name, dept_name
form employee, department
where employee.emp_deptid(+) = department.deptid此sql文使用了右連線,即「(+)」所在位置的另一側為連線的方向,右連線說明等號右側的所有記錄均會被顯示,無論其在左側是否得到匹配,也就是說上例中無論會不會出現某個部門沒有乙個員工的情況,這個部門的名字都會在查詢結果中出現。
反之:select emp_name, dept_name
form employee, department
where employee.emp_deptid = department.deptid(+)則是左連線,無論這個員工有沒有乙個能在department表中得到匹配的部門號,這個員工的記錄都會被顯示
php連線其他伺服器上的oracle伺服器
首先必須保證php的編譯已經加入oracle庫並成功!連線 連線 dbconn oci connect username password description address protocol tcp host 192.168.1.2 port 1521 connect data sid sid...
mysql 連線不上 mysql連線不上怎麼辦
下面是mysql的連線方式 使用mysql二進位制方式連線 您可以使用mysql二進位制方式進入到mysql命令提示符下來連線mysql資料庫。例如以下是從命令列中連線mysql伺服器的簡單例項 root host mysql u root p enter password 在登入成功後會出現 my...
oracle左連線沒用 Oracle左連線,右連線
以下的文章主要是通過 的方式來引出oracle join的正確用法,其在實際中的應用比例還是佔為多數的,如果你對這一新開發的技術,心存好奇的話,以下的文章將會揭開它的神秘面紗。希望你在瀏覽完之後會有所收穫。8i create table dali.test1 a int,b int create t...