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 조인 하는 방식이다.
'데이터베이스 > SQL' 카테고리의 다른 글
09. SQL문 속 또 다른 SQL문, 서브쿼리(P.258~) (0) | 2020.08.16 |
---|---|
09. SQL문 속 또 다른 SQL문, 서브쿼리(P.242~) (0) | 2020.08.15 |
08. 여러 테이블을 하나의 테이블 처럼 사용하는 조인(P.215) (0) | 2020.08.07 |
08. 여러 테이블을 하나의 테이블 처럼 사용하는 조인(P.215) (0) | 2020.08.01 |
07. 다중행 함수와 데이터 그룹화(P.177~) - (1) (0) | 2020.07.30 |