Oracle term
- Cartesian Product 행갯수를 곱하여 출력
- Equijoin = (같을)조건
SELECT *
FROM dept d , emp e
WHERE d.deptno = e.deptno;
- Non-equijoin Equal(=) 이외의 연산자를 사용하여 Join condition을 작성한 경우 non-equijoin 이라한다.
SELECT e.ename, e.job , e.sal, s.grade
FROM emp e,salgrade s
WHERE e.sal between s.losal and s.hisal;
- Outer Join dept , emp 두 테이블의 겹치는 결과를 제외한 나머지 emp에 관하여 NULL 로 반환하여 표시한다.
SELECT d.dname, e.ename
FROM dept d, emp e
WHERE d.deptno = e.deptno(+);
SELECT d.dname, e.ename
FROM dept d, emp e
WHERE d.deptno(+) = e.deptno;
- Self join 자기테이블의 칼럼 2개를 스스로 join 하여 값을 출력
SELECT emp.ename , mgr.ename
FROM emp,emp mgr
WHERE emp.mgr = mgr.empno;
emp 의 테이블
self join 결과
행의갯수는 신경쓰지마시고 봐주세요.
ANSI Term ANSI 표준 'Join'
- Cross join = Cartesian Product 와 같다.
- Natural Join , Join Using, Join On
Natural Join (중복된 속성 중 하나를 제거 하여 정렬)
SELECT * FROM dept natural join emp;
dept , emp 테이블에서 중복된 속성은 deptno 이다.
Join Using ( 특정한 속성을 사용하여 Join)
SELECT * FROM dept JOIN emp USING(deptno); dept,emp 테이블의 deptno만 사용하여 정렬
Join On ( 다른 조인들과 달리 , 컬럼 이름이 달라도 Join을 할 수 있다.)
SELECT * FROM dept d JOIN emp e ON ( d.deptno = e.dept );
- Right Outer Join, Left Outer Join, Full Outer Join
RIGHT OUTER JOIN - 오른쪽 배치된 테이블에 데이터가 존재하지 않을 경우
SELECT e.ename , d.dname FROM dept d RIGHT OUTER JOIN emp e USING(deptno);
LEFT OUTER JOIN - 왼쪽에 배치된 테이블에 데이터가 존재하지 않을 경우
SELECT e.ename , d.dname FROM dept d LEFT OUTER JOIN emp e USING(deptno);
FULL OUTER JOIN - 양쪽모두 데이터가 존재하지 않을 경우
SELECT e.ename , d.dname FROM dept d FULL OUTER JOIN emp e USING(deptno);
[출처] 오라클 OUTER JOIN (LEFT, RIGHT, FULL)|작성자 꿍이
'개발자 > Oracle' 카테고리의 다른 글
Oracle구조 (0) | 2013.01.26 |
---|---|
Advanced Query ( Aggregation ) (0) | 2013.01.26 |
oracle Date Format (0) | 2013.01.26 |
Basic Query (0) | 2013.01.24 |
DML,DDL,CDL,TCL,Null (0) | 2013.01.24 |