我們以Oracle自帶的表來做例子 主要兩張表:dept、emp 一個是部門,一個是員工表結構如下: emp name null? Type Empno not null number(4) ename varchar2(10) job varchar2(9) mgr number(4) hired ...
我們以Oracle自帶的表來做例子
主要兩張表:dept、emp
一個是部門,一個是員工表結構如下:
name | null? | Type |
Empno | not null | number(4) |
ename | varchar2(10) | |
job | varchar2(9) | |
mgr | number(4) | |
hiredate | date | |
sal | number(7,2) | |
comm | number(7,2) | |
deptno | number(2) |
name | null? | Type |
deptno | not null | number(2) |
dname | varchar2(14) | |
log | varchar2(13) |
這兩張表 dept是主表 emp是子表,關聯的列是deptno dept表現有數據
emp表現有數據
inner join 意思是內連接 把匹配的信息全部查出來 SQL>select e.empno,e.ename,e.job,d.deptno,d.dname
from emp e innerjoin dept d on e.deptno=d.deptno orderby e.empno; 查詢的結果: left join 左連接 意思是包含左邊表所有記錄,右邊所有的匹配的記錄,如果沒有則用空補齊 SQL>select e.empno,e.ename,e.job,d.deptno,d.dname
from emp e leftjoin dept d on e.deptno=d.deptno orderby e.empno; 解釋SQL :這條SQL語句左邊是EMP表 左連接結果查詢出EMP所有的記錄,然後根據左邊表匹配出右邊表DEPT所有的記錄 查詢結果如下: right join 右連接 意思是包括右邊表所有記錄,匹配左邊表的記錄,如果沒有則以空補齊
SQL>select e.empno,e.ename,e.job,d.deptno,d.dname
from emp e rightjoin dept d on e.deptno=d.deptno orderby e.empno; 解釋SQL:這條SQL語句EMP在左邊,DEPT在右邊,然後我們採用右連接,就查出右邊表所有的數據 查詢結構: full join 全連接 意思是左右表所有的記錄全部顯示出來 SQL>select e.empno,e.ename,e.job,d.deptno,d.dname
from emp e fulljoin dept d on e.deptno=d.deptno orderby e.empno;
解釋SQL:這條SQL語句採用全連接,查詢出左表和右表所有的值出來 查詢結果: 介紹Oracle +連接方式及說明 +在左邊 為右連接 SQL>select e.empno,e.ename,e.job,d.deptno,d.dname
from emp e,dept d where e.deptno(+)=d.deptno orderby e.empno; 查詢結果: +在右邊 為左連接 SQL>select e.empno,e.ename,e.job,d.deptno,d.dname from emp e,dept d where e.deptno=d.deptno(+) orderby e.empno; 查詢結果: