본문 바로가기

Database/이론

[DB] JOIN 연산의 종류

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