by 김정식 조인 EQUI JOIN NON_EQUI JOIN SELF JOIN 셀프조인 등가조인 CARTESIAN PRODUCT NATURAL JOIN CROSS JOIN INNER JOIN [2002.01.20]
-- dept 테이블과 emp 테이블을 조인하는 예제 SELECT e.empno, e.ename, d.dname FROM dept d, emp e WHERE d.deptno = e.deptno;
콤마(,) 대신 INNER JOIN을 사용 할 수 있으며, INNER는 생략 가능하다. Join 조건은 ON 절에 온다.
-- INNER JOIN절을 이용하여 조인하는 예제
SELECT e.empno, e.ename, d.dname
FROM dept d
INNER JOIN emp e
ON d.deptno = e.deptno;
NATURAL JOIN을 사용 하면 동일한 컬럼을 내부적으로 모두조인 하므로, ON절이 생략 가능하다.
-- NATURAL JOIN절을 이용하여 조인하는 예제 SELECT e.empno, e.ename, d.dname FROM dept d NATURAL JOIN emp e;
NATURAL JOIN의 단점은 동일한 이름을 가지는 칼럼은 모두 조인이 되는데, USING 문을 사용하면 컬럼을 선택해서 조인을 할 수가 있다.
-- JOIN~USING절을 이용하여 조인하는 예제 SELECT e.empno, e.ename, deptno FROM emp e JOIN dept d USING (deptno);
-- emp 테이블과 salgrade 테이블의 Non-Equi Join 예제
SELECT e.ename,e.sal,s.grade
FROM emp e, salgrade s
WHERE e.sal
BETWEEN s.losal
AND s.hisal;
ENAME SAL GRADE
---------- ---------- ----------
SMITH 800 1
JAMES 950 1
ADAMS 1100 1
...
-- 사원의 매니저명을 조회하는 Self Join 예제 SELECT e.ename, a.ename "Manager" FROM emp e, emp a WHERE e.empno = a.mgr; ENAME Manager ------- ---------- FORD SMITH BLAKE ALLEN BLAKE WARD KING JONES ...
-- CROSS JOIN절을 이용하여 Cartesian Product 값을 얻는 예제 SELECT e.empno, e.ename, d.dname FROM dept d CROSS JOIN emp e; 56 개의 행이 선택되었습니다.
- 강좌 URL : http://www.gurubee.net/lecture/1020
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.
셀프조인 예제가 반대로 되어있는거같아요
킹이 사장이라 혼자 MGR이 null인데 저 표에 보면 존스가 매니저라고 뜨네요
SELECT a.ename, e.ename "매니저"
이렇게 해야하지않나요?
셀프조인 부분 위 이엘님이 쓴 뎃글처럼 본문 셀프조인 부분 수정되어야 됩니다.