C. Oracle
oracle 조인
sfeg
2017. 7. 2. 21:34
- oracle에서는 조인쿼리를 정확하게 명시하지 않으면 가능한 모든 조합을 보여준다.
=> Cartesion product
=> Cartesion product
ex) select * from emp, dept;
조인쿼리
Equi JOIN : = 각각의 테이블에 공통된 컬럼이 있을때
ex) select emp.ename, dept.dname, emp.deptno ,dept.deptno
from emp,dept
from emp,dept
where emp.deptno = dept.deptno;
Table Alias: = 별칭을 쓰게되면 모든곳에 별칭을 써야한다. 원래의 table명을 사용하면 error남
ex) select e.ename, d.dname, e.deptno ,d.deptno
from emp e,dept d
from emp e,dept d
where e.deptno = d.deptno;
Non-Equi Join : = 각각의 테이블에 공통된 컬럼이 없을때
ex) SELECT e.ename, s.grade
FROM emp e, salgrade s
WHERE e.sal BETWEEN s.losal AND s.hisal;
FROM emp e, salgrade s
WHERE e.sal BETWEEN s.losal AND s.hisal;
Self Join : 자신이 자신의 테이블에 조인을 하는것~ 메모리에 cppy하여 2개의테이블에서 조인하는 효과
(Aliase하여...논리적으로 2개의 테이블을 만드는 효과)
ex) select e.ename, e.sal, ee.ename
from emp e, emp ee
where e.mgr=ee.empno
Outer Join : 기본 테이블 컬럼 데이타를 다 출력하고(equi join) join된 결과값이 있는것은 출력하고
없는것은 null출력 (+)
없는것은 null출력 (+)
ex) select e.ename, c.ename
from emp e, emp c
where e.mgr = c.empno(+)
1999 SQL3(99문법)
cross join : ex) select e.ename, d.dname from emp e cross join dept d;
natural join : 두 테이블의 컬럼명이 동일한 컬럼을 가지고 조인조건으로 사용.
(ps 동일한 컬럼이 하나여야한다. 2개이상이면 에러난다.)
ex)select e.ename, d.dname from emp e natural join dept d;
join using : 두 테이블의 컬럼명이 동일한 컬럼을 가지고 조인조건으로 사용.
(ps 동일한 컬럼이 2개이상일때 사용)
(ps 동일한 컬럼이 2개이상일때 사용)
여러개의 컬럼중 JOIN조건으로 사용할 특징 컬럼을 선택할수 있다.
ex) select e.ename, d.dname from emp e join dept d using(deptno);
join on :두 컬럼의 데이타는 같지만 컬럼명이 틀릴때 사용
ex) select e.ename, d.dname from emp e join dept d on(e.deptno=d.deptno);
left outer join on
:select e.ename, c.ename from emp e left outer join emp c on(e.mgr=c.empno);
:select e.ename, c.ename from emp e left outer join emp c on(e.mgr=c.empno);
right outer join on
:select e.ename, c.ename from emp e right outer join emp c on(e.mgr=c.empno);
:select e.ename, c.ename from emp e right outer join emp c on(e.mgr=c.empno);
full outer join on
:select e.ename, c.ename from emp e full outer join emp c on(e.mgr=c.empno)
:select e.ename, c.ename from emp e full outer join emp c on(e.mgr=c.empno)