JOIN에도 여러가지 종류가 있는데요.
먼저 CROSS JOIN부터 살펴보겠습니다.
CROSS JOIN은 별도의 조건 없이 두 테이블 간의 가능한 모든 결과를 조회(모든 경우의 수)합니다.
SELECT * FROM TB1, TB2;
SELECT * FROM TB1 CROSS JOIN TB2;
두 SELECT문의 출력값이 같은데요.
필요없는 데이터도 출력되기 때문에 잘 쓰이지는 않습니다.
다음으로 살펴볼 INNER JOIN은 조건에 해당하는 값만 나옵니다.
SELECT * FROM TB1 INNER JOIN TB2 ON TB1.NAME = TB2.NAME;
SELECT * FROM TB1 A, TB2 B WHERE A.NAME = B.NAME;
SELECT * FROM TB1 JOIN TB2 USING (NAME);
3개의 SELECT문 모두 조건에 따라서 해당하는 값을 출력합니다.
USING은 괄호안의 값이 같으면 출력합니다.
NATURAL JOIN은 조건절 없이 양쪽에 같은 이름값을 가진 동일한 컬럼만을 조회합니다.
SELECT * FROM TB1 NATURAL JOIN TB2;
OUTER JOIN은 기준 테이블의 데이터가 모두 조회(누락 없이) 되고,
대상 테이블에 데이터가 있는 경우 해당 컬럼의 값을 가져오기 위해서 사용하는데요.
(+) 를 이용한 OUTER JOIN : NULL이 출력되는 테이블의 컬럼(+) 기호를 추가합니다.
OUTER JOIN 중 하나인 LEFT OUTER JOIN은 왼쪽 테이블에 값이 있을 시 오른쪽 테이블이 조건에 맞지
않아도 나오게 됩니다. (조건이 맞지 않으면 NULL로 메꿈)
반대로 RIGHT OUTER JOIN은 오른쪽 테이블에 값이 있을 시 왼쪽 테이블이 조건에 맞지 않아도
나옵니다. ( 조건에 맞지 않으면 NULL로 메꿈)
보통 LEFT OUTER JOIN을 쓰는 경향이 있다고 합니다.
FULL OUTER JOIN은 한쪽 테이블에 값이 있을 때, 다른쪽 테이블이 조건이 맞지 않아도
나오게 됩니다.
SELECT * FROM TB1 FULL OUTER JOIN TB2 ON TB1.NAME = TB2.NAME;
SELF JOIN은 하나의 테이블 내에 있는 컬럼끼리 연결하는 조인이 필요한 경우 사용합니다.
SELECT A.ID, A.NAME, B.ID FROM WEB_SITE A JOIN WEB_SITE B
ON A.ID = B.MANAGER;
'Database > 이론' 카테고리의 다른 글
[DB] Update (0) | 2025.01.03 |
---|---|
[DB] 계층형 쿼리 (0) | 2025.01.03 |
[DB] View (0) | 2025.01.02 |
[DB] Join (0) | 2025.01.02 |
[DB] 서브쿼리 (1) | 2025.01.02 |