inner join
null데이터는 비교할수없기때문에 부서가 null이면 이너조인에는 안나온다.
일치하는 조건을 모두 다가지고 옴
SELECT e.empno, e.ename, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno |
outer join
null까지 다 가지고옴
(+)를 붙이고, 쁠러스가 붙지 않는쪽이 기존 테이블 (누락시키지 않고 싶은 쪽)
SELECT e.empno, e.ename, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno(+) |
모든 데이터베이스 공통형식인 ANSI형식으로도 써줄수있다.
ANSI - inner join (INNER JOIN이라고 명시해서 써줄수도있다)
SELECT e.empno, e.ename, d.dname FROM emp e JOIN dept d ON (e.deptno = d.deptno) |
ANSI - outer join (LEFT, RIGHT를 써서 기준이 되는 테이블을 명시해야한다. 명시하는대신 OUTER도 생략가능)
SELECT e.empno, e.ename, d.dname FROM emp e LEFT OUTER JOIN dept d ON (e.deptno = d.deptno) |
* 오라클은 FULL OUTER JOIN이 안된다. ANSI표현으로 써줘야 된다.
쎌프조인이란 신기한것도 있다. 부모글이 있고 답글이 있다면 게시판테이블에 답글도 다 집어넣는데, 어떤글의 답글인지 알아야 한다. 따라서 답글은 부모글의 번호를 가지고있다. 그래서, 셀프조인임!
상사를 찾는 sql을 작성해보자
쎌프쪼인
SELECT e.ename FROM emp e, emp m WHERE e.mgr = m.empno |
만약 최고관리자까지 뜨고싶다면 m.empno(+)이렇게 명시해준다.
서브쿼리
SELECT empno, sal FROM emp WHERE sal > ( SELECT avg(sal) FROM emp ); |
이런식으로 쓸수있다
'데이터베이스' 카테고리의 다른 글
Oracle 10g 원격접속 (0) | 2014.05.20 |
---|---|
오라클 10g 원격접속이 안될때 체크 (0) | 2014.05.18 |
[오라클] 유용한 명령어 - 데이터변환 (0) | 2014.05.12 |
[오라클]유용한 명령어 - 기본 (0) | 2014.05.12 |
MySQL 데이터타입 (0) | 2014.05.09 |