본문 바로가기

데이터베이스/SQL

08. 여러 테이블을 하나의 테이블 처럼 사용하는 조인(P.232)

08-3. SQL-99 표준 문법(ISO/ANSI) 으로 배우는 조인

 

1) '08-2. 조인종류'에서 배웠던 JOIN 이외에, ANSI 방법을 사용하면 다른 DBMS 제품에서도 사용 할 수 있다.

2) 조인 조건이 WHERE절에 있는 기존 조인 방식 과는 달리 SQL-99 방식 조인은 FROM 절에 있는 조인 키워드를 사용하는 형태로 작성된다. 

 

1. 등가 조인(Inner join, Simple join) : NATURAL JOIN / JOIN ~ USING / JOIN~ON

 

1-1 NATURAL JOIN 

: 등가 조인을 대신해 사용 할 수 있는 조인 방식으로 저인 대상이 되는 두 테이블에 이름과 자료형이 같은 열을 찾은 후 그 열을 기준으로 등가 조인을 해주는 방식이다.

 

1) 문법

2) 예시/결과

 

- 예시

/*
08-3 SQL 표준 문법으로 배우는 조인
NATURAL JOIN
*/
SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM,
DEPTNO, D.DNAME, D.LOC
FROM EMP E NATURAL JOIN DEPT D
ORDER BY DEPTNO, E.EMPNO;

- 결과

1-2. JOIN ~ USING

: NATURAL JOIN이 자동으로 조인 기준 열을 정하는 것과 달리 USING키워드에 조인 기준으로 사용할 열을 지정 할 수 있다.

 

1)문법

: FROM TABLE1 JOIN TABLE2 USING (조인에 사용할 기준열)

2)예시/결과

 

-예시

/*JOIN ~ USING
실습 8-12
*/
SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM,
DEPTNO, D.DNAME, D.LOC
FROM EMP E JOIN DEPT D USING(DEPTNO)
WHERE SAL >=3000
ORDER BY DEPTNO, E.EMPNO;

-결과

1-3. JOIN ~ ON

: SQL-99 표준 문법(ISO/ANSI) 중 가장 범용성 있게 사용되는 방식이다. 조인 기준은 ON에 명시하고, 그 밖의 출력은 WHERE 조건식을 따로 사용한다.

 

1) 문법

: FROM TABLE1 JOIN TABLE2 ON(조인 조건식)

2) 예시/결과

-예시

/*
실습 8-13
JOIN ~ ON // FROM TABLE 1 JOIN TABLE2 ON 조건식
*/
SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM,
       E.DEPTNO,
       D.DNAME, D.LOC
FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO)
WHERE SAL <=3000
ORDER BY E.DEPTNO, EMPNO; 

-결과

3) 실무활용

 

2. 외부 조인(Outer Join)
: 두 개 이상의 테이블을 JOIN 할 시에 NULL 값이 있는 경우, 그 값 또한 출력하는 방식이다.

 

1) 문법

구분 문법
왼쪽 외부 조인
(Left Outer Join)
FROM TABLE1 LEFT OUTER JOIN TABLE2 ON (조인 조건식)
오른쪽 외부 조인
(Right Outer Join)
FROM TABLE1 RIGHT OUTER JOIN TABLE2 ON(조인 조건식)
전체 외부 조인
(Full Outer Join)
FROM TABLE1 FULL OUTER JOIN TABLE2 ON(조인 조건식)

2) 예시/결과

 

2-1) 왼쪽 외부 조인(Left Outer Join)

 

-예시

SELECT E1.EMPNO, E1.ENAME, E1.MGR,
       E2.EMPNO AS MGR_EMPNO,
       E2.ENAME AS MGR_ENAME
FROM EMP E1 LEFT OUTER JOIN EMP E2 ON (E1.MGR = E2.EMPNO)
ORDER BY E1.EMPNO;

-결과


2-2) 오른쪽 외부 조인(Right Outer Join)

 

-예시

/*
8-15 오른쪽 외부 조인을 SQL-99로 작성하기
*/
SELECT E1.EMPNO, E1.ENAME, E1.MGR,
       E2.EMPNO AS MGR_EMPNO,
       E2.ENAME AS MGR_ENAME
FROM EMP E1 RIGHT OUTER JOIN EMP E2 ON (E1.MGR = E2.EMPNO)
ORDER BY E1.EMPNO, MGR_EMPNO;

-결과

3.  안시 조인 방식에서 세 개 이상의 테이블을 조인할 때

 

- 기존방식

FROM TABLE1, TABLE2, TABLE3

WHERE TABLE1.COL = TABLE2.COL

AND TABLE2.COL = TABLE3.COL

 

: 위의 두가지 조인 모두 TABLE1 과 TABLE2 조인 + TABLE2 와 TABLE3 조인 하는 방식이다.