꿈꾸는 개발자의 블로그
[Oracle SQL] JOIN 종류와 과정 설명 (INNER JOIN, OUTER JOIN) 본문
Programming/Oracle SQL
[Oracle SQL] JOIN 종류와 과정 설명 (INNER JOIN, OUTER JOIN)
aldrn29 2023. 3. 7. 16:51JOIN 종류
JOIN 종류는 크게 INNER JOIN(내부 조인)과 OUTER JOIN(외부 조인)으로 나뉜다. 그리고 해당 조인에 대하여 다양한 조인 방식이 있다.
- INNER JOIN : INNER JOIN, EQUI JOIN, NON-EQUI JOIN, NATURAL JOIN, CROSS JOIN
- OUTER JOIN : LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN
INNER JOIN
조인 조건구에 따라 두 테이블의 컬럼값이 일치하는 경우를 조회한다.
INNER JOIN
ON문을 사용해서 테이블을 연결하여 컬럼값이 일치하는 경우를 조회한다. (INNER 생략 가능)
SELECT *
FROM A a JOIN B b ON a.ID = b.ID
EQUI JOIN
WHERE절에 '='을 사용해서 테이블을 연결하여 컬럼값이 일치하는 경우를 조회한다. 위의 INNER JOIN과 같은 결과를 보여준다.
SELECT *
FROM A a, B b
WHERE a.ID = b.ID
NON-EQUI JOIN
WHERE절에 '>', '<', '>=', '<=' 등을 사용해서 테이블을 연결하는 것으로 컬럼값이 정확하게 일치하지 않는 것을 조회한다.
SELECT a.ID, b.GRADE
FROM A a, B b
WHERE a.SCORE BETWEEN b.START AND b.END -- WHERE b.START <= a.SCORE <= b.END
NATURAL JOIN
동일한 타입과 컬럼명을 기준으로 조인이 암시적으로 일어난다.
SELECT *
FROM A a NATURAL JOIN B b
조인 조건구로 ID 컬럼을 명시하지 않아도 동일한 타입과 컬럼명이기 때문에 자동으로 조인이 된다. 동일한 타입과 컬럼은 모두 조인 기준이 되기 때문에, 예상과 다르게 조회될 수 있다.
CROSS JOIN
조인 조건구 없이 두 테이블을 조인하는 것으로 카테시안 곱이 발생한다.
SELECT *
FROM A a CROSS JOIN B b ON a.ID = b.ID
OUTER JOIN
조인 조건구에 따라 컬럼값이 일치하는 경우와 기준 테이블에만 있는 값을 포함해서 조회한다.
LEFT OUTER JOIN
두 테이블에서 같은 것과 왼쪽 테이블에만 있는 것을 포함해서 조회한다.
SELECT * FROM
WHERE A a LEFT OUTER JOIN B b ON a.ID = b.ID -- WHERE A a (+)= B b ON a.ID = b.ID
RIGHT OUTER JOIN
두 테이블에서 같은 것과 오른쪽 테이블에만 있는 것을 포함해서 조회한다.
SELECT * FROM
WHERE A a LEFT OUTER JOIN B b ON a.ID = b.ID -- WHERE A a =(+) B b ON a.ID = b.ID
FULL OUTER JOIN
두 테이블에서 같은 것과 왼쪽, 오른쪽 테이블에만 있는 것을 모두 포함해서 조회한다.
SELECT * FROM
WHERE A a FULL OUTER JOIN B b ON a.ID = b.ID
728x90
728x90
'Programming > Oracle SQL' 카테고리의 다른 글
[Oracle SQL] 반올림 ROUND, 올림 CEIL, 내림 FLOOR, 버림 TRUNC (0) | 2023.07.25 |
---|---|
[Oracle SQL] ROWNUM : 상위 n개 데이터 조회하기 (0) | 2023.03.08 |
[Oracle SQL] OUTER JOIN (외부 조인)과 UNION (합집합) 차이 (0) | 2023.03.07 |
Comments