SQL
[ORACLE]JOIN ( INNER, OUTER) + ANSI
seonzone
2021. 8. 1. 23:42
JOIN
JOIN은 두 개 이상의 테이블을 연결하여 하나의 테이블처럼 출력하는 방식이다.
이러한 방식은 조인 말고도 집합 연산자도 있지만 이 둘의 차이점이라면 조인은 결과를 가로로 출력하고,
집합 연산자는 세로로 출력하면 쉽게 이해할 수 있다.
조인의 종류로는 외부조인(OUTER), 내부 조인(INNER), LEFT, OUTER 그리고 다른 SQL에서도 사용 가능한 ANSI 조인이 있다.
예제 테이블 [SSANG] , [SSANG_DEPT]
[SSANG]
[SSANG_DEPT]
내부조인(INNER)
내부조인은 벤 다이어그램으로 설명하자면 교집합 과 같은 관계이다.
예제 테이블로 설명하자면 둘의 교집함은 EMPNO 이고 EMPNO가 없는 황의조는 출력이되지 않는다.
외부 조인(OUTER)
외부 조인은 기존 테이블에서 조인하려는 테이블을 모두 출력하는 것이다.
만약 조인하려는 테이블에 NULL값이 섞여 있더라도 모든 데이터를 출력한다.
WHERE TABLE1.COL1 = TABLE2.COL1(+) --왼쪽 외부조인
WHERE TABLE1.COL1(+) = TABLE2.COL1 --오른쪽 외부조인
SELECT E.EMPNO, E.NAME, E.JOB,D.DNAME,D.LOC,D.DEPTNO
FROM SSANG E,SSANG_DEPT D
WHERE E.DEPTNO = D.DEPTNO(+)
ORDER BY E.EMPNO;
ANSI 조인
ANSI 조인은 INNER,OUTER조인과 같은 결과가 나오며 문법이 약간 다르다
ANSI 내부조인
SELECT E.EMPNO, E.NAME, E.JOB,D.DNAME,D.LOC,D.DEPTNO
FROM SSANG E INNER JOIN SSANG_DEPT D
ON E.DEPTNO = D.DEPTNO
ORDER BY E.EMPNO;
ANSI 외부조인
외부조인은 LEFT, RIGHT, FULL 이 있다.
SELECT E.EMPNO, E.NAME, E.JOB,D.DNAME,D.LOC,D.DEPTNO
FROM SSANG E LEFT OUTER JOIN SSANG_DEPT D
ON E.DEPTNO = D.DEPTNO
ORDER BY E.EMPNO;
SELECT E.EMPNO, E.NAME, E.JOB,D.DNAME,D.LOC,D.DEPTNO
FROM SSANG E RIGHT OUTER JOIN SSANG_DEPT D
ON E.DEPTNO = D.DEPTNO
ORDER BY E.EMPNO;
SELECT E.EMPNO, E.NAME, E.JOB,D.DNAME,D.LOC,D.DEPTNO
FROM SSANG E FULL OUTER JOIN SSANG_DEPT D
ON E.DEPTNO = D.DEPTNO
ORDER BY E.EMPNO;