티스토리 뷰

JOIN ?


• 둘 이상의 테이블에서 데이터가 필요한 경우 테이블 조인이 필요 (테이블 결합)
• 일반적으로 조인 조건을 포함하는 WHERE 절을 작성해야 한다
• 조인 조건은 일반적으로 각 테이블의 PK 및 FK 로 구성됩니다

 

JOIN 의 종류

INNER JOIN
OUTER JOIN
 - LEFT OUTER JOIN
 - RIGHT OUTER JOIN

   - FULL OUTER JOIN  (MySQL에서는 지원 안됨)

 

JOIN 조건의 명시에 따른 구분

NATURAL JOIN
• CROSS JOIN(FULL JOIN, CARTESIAN JOIN)

 

 

Inner Join

SELECT col1, col2, ..., colN
FROM table1 INNER JOIN table2;

SQL에서 기본적으로 JOIN 키워드를 사용하거나 콤마(,)를 통해 연결하면 Inner Join 연산을 수행한다.

이 때, 조건이 설정되지 않은 Inner Join은 Cross Join과 같은 연산을 수행한다.

 

Cross Join은 곱연산으로, 테이블의 각 행끼리의 모든 조합을 나타내준다.

 

 

 

 

SELECT col1, col2, ..., colN
FROM table1 INNER JOIN table2
ON table1.column = table2.column;

이 때, Inner Join 뒤에 ON 키워드를 통해 일치하는 속성을 기준으로 결합할 수도 있으며, 이를 Equi Join(동등 조인)이라고 한다.

 

N개의 테이블 조인 시 N-1개의 조인 조건이 필요하다.

 

 

 

USING 을 이용하여 join 조건을 지정할 수도 있다.

SELECT col1, col2, ..., colN
FROM table1 JOIN table2
USING (공통column);

 

 

Outer Join

Outer Join은 공통된 부분만 결합하는 Inner Join과 다르게 공통되지 않은 row도 유지한다.

 

이 때, 왼쪽 테이블의 row를 유지하면 Left Outer Join,

오른쪽 테이블의 row를 유지하면 Right Outer Join,

양쪽 테이블의 row를 모두 유지하면 Full Outer Join이다.

 

어느 한쪽 테이블에는 해당하는 데이터가 존재하는데 다른 쪽 테이블에는 데이터가 존재하지 않을 경우 

그 데이터가 검색되지 않는 문제점을 해결하기 위해 사용한다.

 

Left Outer Join

SELECT col1, col2, ..., colN
FROM table1 LEFT OUTER JOIN table2
ON or USING;

 

LEFT OUTER JOIN을 수행하면 왼쪽 테이블(instructor)을 기준으로 조건에 일치하는 row만 결합되고,

일치하지 않는 부분은 null 값으로 채워진다.

 

즉, 왼쪽 테이블을 기준으로 JOIN 조건에 일치하지 않는 데이터까지 출력한다.

 

 

 

 

 

Right Outer Join

SELECT col1, col2, ..., colN
FROM table1 RIGHT OUTER JOIN table2
ON or USING;

 

RIGHT OUTER JOIN을 수행하면 오른쪽 테이블(teaches)을 기준으로 조건에 일치하는 row만 결합되고,

일치하지 않는 부분은 null 값으로 채워진다.

 

즉, 오른쪽 테이블을 기준으로 JOIN 조건에 일치하지 않는 데이터까지 출력한다.

 

 

Full Outer Join

SELECT col1, col2, ..., colN
FROM table1 FULL OUTER JOIN table2
ON or USING;

 

FULL OUTER JOIN을 수행하면 조건에 일치하는 row만 결합한 뒤, 일치하지 않는 row의 빈 칸은 모두 null 값으로 채워진다.

 

즉, 양쪽 테이블을 기준으로 JOIN 조건에 일치하지 않는 데이터까지 출력한다.

 

※ MySQL에서는 FULL OUTER JOIN을 지원하지 않으므로 LEFT OUTER JOIN 결과와 RIGHT OUTER JOIN 결과를 UNION 키워드를 통해 합쳐 사용해야 한다.

 

 

 

Natural Join

SELECT col1, col2, ..., colN
FROM table1 NATURAL JOIN table2;

Natural Join을 사용하면 공통된 속성을 찾아 같은 값을 갖는 항목끼리 결합시켜준다.

만약 같은 값을 갖는 항목이 없다면 해당 항목은 제외한다.

 

SQL은 마찬가지로 FROM 절의 결합할 두 테이블 사이에 NATURAL JOIN 키워드를 넣어주면 된다.

 

 

'Web 개발 > MySQL' 카테고리의 다른 글

[친절한 SQL 튜닝] 6장 DML 튜닝  (0) 2025.03.31
최근에 올라온 글
Total
Today
Yesterday