SQL Server의 JOIN: 유형 및 예제
⚡ 스마트 요약
SQL Server의 JOIN은 INNER, LEFT OUTER, RIGHT OUTER 및 FULL OUTER JOIN을 사용하여 두 개 이상의 테이블에서 관련 열을 기준으로 행을 결합합니다. JOIN을 통해 일치하는 행과 일치하지 않는 행을 결과에 표시할지 여부를 제어할 수 있습니다.

SQL Server에서 조인(Join)이란 무엇인가요?
JOIN 문을 사용하면 둘 이상의 테이블에서 데이터를 가져올 수 있습니다. SQL 서버JOIN은 두 개 이상의 테이블에서 관련된 열을 기준으로 행을 결합합니다. 가장 흔한 관련 열은 다음과 같습니다. 기본 키 ~와 일치함 외래 키SQL Server에는 주로 네 가지 유형의 JOIN이 있습니다.
- 내부 조인 / 단순 조인
- 왼쪽 외부 조인 / 왼쪽 조인
- 오른쪽 외부 조인 / 오른쪽 조인
- 전체 외부 조인
아래 표는 각 JOIN 유형이 반환하는 행을 요약한 것입니다.
| JOIN 유형 | 반환된 행 |
| 내부 결합 | 두 테이블의 조인 조건이 일치하는 행만 표시됩니다. |
| 왼쪽 외부 조인 | 왼쪽 테이블의 모든 행과, 일치하는 오른쪽 테이블의 행들을 더합니다(일치하는 행이 없으면 NULL로 처리). |
| 오른쪽 외부 조인 | 오른쪽 테이블의 모든 행과, 왼쪽 테이블에서 일치하는 행(일치하는 행이 없는 경우 NULL)을 모두 더합니다. |
| 전체 외부 조인 | 두 테이블의 모든 행에서 조건을 충족하지 않는 행은 모두 NULL로 처리합니다. |
아래 예시에서는 두 가지를 사용합니다. 테이블학생 수와 수업료 데이터를 공통 입학 열을 기준으로 조인합니다. 각 섹션에서는 하나의 JOIN 유형과 해당 구문, 실행 예시 쿼리, 그리고 결과를 설명합니다.
내부 결합
이러한 유형의 SQL 서버 JOIN 함수는 조인 조건이 참인 모든 테이블의 행을 반환합니다. 구문은 다음과 같습니다.
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
다음 두 표를 통해 이를 설명하겠습니다. 아래의 학생 표에는 각 학생과 입학 번호가 나열되어 있습니다.
아래 수수료 표에는 각 입학 번호별로 납부된 금액이 기록되어 있습니다.
다음 명령은 SQL Server에서 INNER JOIN을 사용하는 예시를 보여줍니다.
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
이 명령은 두 표 모두에 있는 입학자 수만 표시하는 다음과 같은 결과를 반환합니다.
우리는 어떤 학생들이 수업료를 납부했는지 알 수 있습니다. 두 표에서 공통 값을 가진 열, 즉 입학 여부 열을 이용했습니다.
왼쪽 외부 조인
이러한 유형의 조인은 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 값이 일치하는 레코드를 반환합니다. 예를 들면 다음과 같습니다.
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
해당 코드는 다음과 같은 결과를 반환합니다.ping 수수료 기록이 일치하지 않는 경우에도 모든 학생에게 적용됩니다.
일치하는 값이 없는 레코드는 해당 열에서 NULL로 대체됩니다.
오른쪽 외부 조인
이 유형의 조인은 오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 값이 있는 행만 반환합니다. 예를 들어:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students RIGHT OUTER JOIN Fee ON Students.admission = Fee.admission
SQL Server에서 외부 조인(OUTER JOIN) 문을 실행하면 다음과 같은 결과가 반환됩니다.
위 출력의 이유는 입학 열에서 일치하는 경우 Fee 테이블의 모든 행을 Students 테이블에서 사용할 수 있기 때문입니다.
전체 외부 조인
이러한 유형의 조인은 두 테이블의 모든 행을 반환하며, 조인 조건이 참이 아닌 행은 모두 NULL 값으로 처리합니다. 예를 들면 다음과 같습니다.
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students FULL OUTER JOIN Fee ON Students.admission = Fee.admission
해당 코드는 FULL OUTER JOIN 쿼리에 대해 다음과 같은 결과를 반환합니다. SQL두 테이블의 모든 행을 결합하면 다음과 같습니다.






