最常用的幾種連線的使用:內連線,外連線,左(外,內)連線,右(外,內)連線,全(不分左右)連線,交叉連線(笛卡爾集),自連線(同乙個表的權級結構)。連線一般用於多表之間複雜的查詢。
內連線,即相等連線,等值連線,如右兩張表 dept ,employee。
dept裡有字段deptid,deptname,employee有欄位empno,deptid,ename,sal,age等
那連線查詢語句如下:select a.* ,b.* from dept a,employee b where a.deptid=b.deptid
一般出現這種情況的是一張是主表,另一張是子表,主表的主鍵作為子表的外來鍵,顯示結果按照子表的顯示, 內連線簡單,不多說。
外連線在oralce裡用(+)表示被補充的一方。
右連線指的是右邊是主表,左連線指的是左邊是主表。
01右外連線。例子:
select empno,ename,sal,emp.deptno,dept.deptno from emp,dept where emp.deptno(+) =dept.deptno;
02左外連線。例子:
select empno,ename,sal,emp.deptno,dept.deptno from emp,dept where dept.no=emp.deptno(+)
兩個查詢顯示的查詢結果是一樣的,記憶方法:(+)出現查詢條件的左邊即右連線(右邊為主),出現在右邊即左連線(左邊為主)。
也就是說左右是指主表的左右,而不是(+)代表的從表或者稱作被補充的那個表的左右。
因為左右是相對的,右聯結a、b表的結果和左聯結b、a的結果是一樣的,也就是說:
select a.name b.name from a left join b on a.id=b.id
和select a.name b.name from b right join a on b.id=a.id執行後的結果是一樣的。
03全外關聯: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的員工記錄和沒有任何員工的部門記錄。 (只要是查詢中提到了的表的字段都會取出,無論是否符合聯結條件,因此最好記憶)。
由Oralce的左右連線想到的
以前也看了不少關於sql的左右連線的內容,都是全部顯示其中乙個表的全部內容。也許是內容太抽象,或是自己平常用的少,具體如何使用?如何去思考如何用這個左右連線?雖然這是乙個很簡單的問題,由於最近做專案,剛好有了這方面的思考!以下用的情況是oracle8i,因為專案關係,其實只要原理一樣,不管不用管資料...
連線特定的oralce資料庫
需要在tnsnames.ora中配置相應的sid,如下 include include include exec sql include sqlca exec oracle option release cursor yes exec sql begin declare section varcha...
VS2019中連線Oralce資料庫
vs2019連線oralce資料庫 然後再 中加入 using oracle.manageddataaccess.client 就可以使用oracleconnection oraclecommand oracledataadapter來連線並訪問oracle資料庫了。我是再vs2019下新建了乙個c...