'외부조인'에 해당되는 글 1건

  1. 2008.04.19 ORACLE-JOIN 알아보기 4

조인(JOIN)

하나 이상의 테이블을 연결하여 데이터를 검색하는 방법

 

형식

SELECT 테이블1.칼럼1, 테이블1.칼럼2, …, [테이블2.칼럼1, 테이블2.칼럼2, …]

FROM 테이블1, 테이블2

WHERE 테이블1.공통칼럼=테이블2.공통칼럼 ;

 

1. Equi-JOIN(동등 조인) or INNER JOIN(내부 조인)

일반적으로 JOIN하면 INNER JOIN을 지칭할 정도로 많이 사용한다.

 

예제) 급여가 2000 이상인 사원에 대해 사원 번호, 사원이름, 업무, 부서명, 위치를 검색

SELECT a.EMPNO, a.ENAME, a.JOB, a.SAL, b.DNAME, b.LOC

FROM EMP a, DEPT b

WHERE a.DEPTNO=b.DEPTNO AND a.SAL>=2000;

 

SELECT a.EMPNO, a.ENAME, a.JOB, a.SAL, b.DNAME, b.LOC

FROM EMP a INNER JOIN DEPT b

ON a.DEPTNO=b.DEPTNO AND a.SAL>=2000;

결과

사용자 삽입 이미지

2. Non-Equi JOIN(비동등 조인)
테이블의 어떤 칼럼도 조인할 테이블의 칼럼과 일치하지 않을 때 사용.

따라서 조인 조건 대신 BETWEEN  AND, IS NULL, IS NOT NULL, IN, NOT IN

같은 연산자를 사용

 

예제) 사원 테이블(EMP) 내의 급여가 급여등급테이블(SALGRADE)의 하한값과 상한값 사이에 포함되는 경우 사원번호, 사원이름, 사원급여, 사원등급이 표시되도록 하시오.

SELECT a.EMPNO 사원번호, a.ENAME 사원이름, a.SAL 사원급여,
b.GRADE
사원등급

FROM EMP a, SALGRADE b

WHERE a.SAL BETWEEN b.LOSAL AND b.HISAL ;

 

결과

사용자 삽입 이미지

3. SELF JOIN(자기 조인)

일반적인 조인은 서로 다른 테이블을 이용하여 처리하였으나 SELF JOIN은 자기 자신의 테이블을 별칭을 이용해서 조인하여 원하는 결과값을 검색하는 조인의 한 유형이다.

 

예제) 사원번호, 사원이름, 관리자이름, 관리자번호가 나타나도록 검색하시오.

SELECT a.EMPNO 사원번호, a.ENAME 사원이름, b.ENAME 관리자이름,

b.EMPNO 관리자번호

FROM EMP a, EMP b

WHERE a.MGR=b.EMPNO;

 

결과

 

사용자 삽입 이미지

4. OUTER JOIN(외부 조인)

동등조인과 비동등 조인의 경우에 조인 조건이 만족하는 데이터만 검색이 되므로

위의 검색결과를 참고하면 알 수 있듯이 DEPT 테이블에 있는 DEPTNO=40에 해당하는

OPERATIONS 부서는 절대로 검색되지 않는다.

따라서 이러한 문제를 해결하기 위해서 OUTER JOIN을 사용한다.


유형

LEFT OUT JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN이 있는데 FULL OUTER JOIN LEFT, RIGHT JOIN을 합한 형태이다.

(+) 기호를 사용하기도 하는데 (+) 기호는 일치되지 않는 행이 존재하지 않은 쪽에 붙인다.

 

SELECT a.EMPNO, a.ENAME, b.DNAME

FROM EMP a, DEPT b

WHERE a.DEPTNO (+)= b.DEPTNO;

 

SELECT a.EMPNO, a.ENAME, b.DNAME

FROM EMP a RIGHT OUTER JOIN  DEPT b

ON a.DEPTNO = b.DEPTNO;

 

결과

사용자 삽입 이미지

참고로 FULL OUTER JOIN (+)기호를 사용해서 구할 수 없고 FULL OUTER JOIN 형식으로만 가능하다.

SELECT a.EMPNO, a.ENAME, b.DNAME

FROM EMP a, DEPT b

WHERE a.DEPTNO(+)= b.DEPTNO(+); -> 에러 발생

 

SELECT a.EMPNO, a.ENAME, b.DNAME

FROM EMP a FULL OUTER JOIN  DEPT b

ON a.DEPTNO = b.DEPTNO;

 

5. Cartesian Product(카티션 곱) or Cross JOIN(크로스 조인)

 

쿼리문

SELECT EMPNO, ENAME, DNAME

FROM DEPT

CROSS JOIN EMP;

 

결과

사용자 삽입 이미지

6. Natural JOIN(자연 조인)

자연 조인은 Equi-JOIN과 동일하지만 기술하는 방법이 조금 다른데,

JOIN 조건을 표시하지 않고 FROM 뒤의 테이블 내에서 동일한 이름을

갖는 칼럼들을 찾아서 동등한 조건으로 JOIN해줌.


쿼리문

SELECT EMPNO, ENAME, DNAME

FROM DEPT

NATURAL JOIN EMP;

 

결과

 

사용자 삽입 이미지

이상으로 JOIN(조인)에 대해서 간략히 알아보았습니다.
그럼 이만..

Posted by 원철연(체르니)
,