SQL Server의 JOIN: 유형 및 예제

⚡ 스마트 요약

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

  • 🔗 목적 : JOIN은 공통 열(일반적으로 키)을 기준으로 두 개 이상의 테이블에서 관련된 데이터를 검색합니다.
  • 🎯 내부 조인: INNER JOIN은 두 테이블 모두에서 조인 조건이 참인 행만 반환합니다.
  • ⬅️ 왼쪽 외부 조인: LEFT OUTER JOIN은 왼쪽 테이블의 모든 행을 반환하고, 오른쪽 테이블에서 일치하지 않는 열은 NULL로 채웁니다.
  • 오른쪽 외부 조인: RIGHT OUTER JOIN은 오른쪽 테이블의 모든 행을 반환하고, 왼쪽 테이블에서 일치하지 않는 열은 NULL로 채웁니다.
  • 🔄 전체 외부 조인: FULL OUTER JOIN은 조건을 만족하지 않는 모든 행을 NULL로 대체하여 두 테이블의 모든 행을 반환합니다.
  • 🔑 켜짐 조건: ON 절은 테이블을 연결하는 열의 이름을 지정하며, 가장 흔한 경우는 기본 키와 외래 키 쌍입니다.

SQL Server의 조인: INNER, LEFT, RIGHT 및 FULL OUTER 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;

다음 두 표를 통해 이를 설명하겠습니다. 아래의 학생 표에는 각 학생과 입학 번호가 나열되어 있습니다.

학생 테이블에는 admission, firstName, lastName 열이 나열되어 있습니다.

아래 수수료 표에는 각 입학 번호별로 납부된 금액이 기록되어 있습니다.

입장 인원수와 지불 금액 열을 나열한 수수료 표

다음 명령은 SQL Server에서 INNER JOIN을 사용하는 예시를 보여줍니다.

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
INNER JOIN Fee
ON Students.admission = Fee.admission

이 명령은 두 표 모두에 있는 입학자 수만 표시하는 다음과 같은 결과를 반환합니다.

INNER JOIN 결과는 두 테이블 모두에 입학 정보가 있는 학생만 표시합니다.

우리는 어떤 학생들이 수업료를 납부했는지 알 수 있습니다. 두 표에서 공통 값을 가진 열, 즉 입학 여부 열을 이용했습니다.

왼쪽 외부 조인

이러한 유형의 조인은 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 값이 일치하는 레코드를 반환합니다. 예를 들면 다음과 같습니다.

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
LEFT OUTER JOIN Fee
ON Students.admission = Fee.admission

해당 코드는 다음과 같은 결과를 반환합니다.ping 수수료 기록이 일치하지 않는 경우에도 모든 학생에게 적용됩니다.

LEFT OUTER JOIN 결과 keeping 일치하지 않는 수수료에 대해 모든 학생 행이 NULL로 표시됩니다.

일치하는 값이 없는 레코드는 해당 열에서 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) 문을 실행하면 다음과 같은 결과가 반환됩니다.

오른쪽 외부 조인 결과 유지ping 모든 수수료 행과 그에 상응하는 학생 행

위 출력의 이유는 입학 열에서 일치하는 경우 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두 테이블의 모든 행을 결합하면 다음과 같습니다.

모든 학생 및 수수료 행을 결합하고 빈칸에는 NULL 값을 입력하는 전체 외부 조인 결과입니다.

자주 묻는 질문

크로스 조인은 두 테이블의 카르테시안 곱을 반환하며, 첫 번째 테이블의 모든 행을 두 번째 테이블의 모든 행과 짝짓습니다. 크로스 조인에는 ON 조건이 없으므로 10행과 5행으로 이루어진 테이블은 50개의 행을 반환합니다.

셀프 조인을 사용하면 테이블이 서로 다른 별칭으로 두 번 나열된 다음 관련 열을 기준으로 조인되어 동일 테이블 내의 행을 비교할 수 있습니다. 이는 각 직원을 관리자와 연결하는 것과 같은 계층적 데이터에 흔히 사용됩니다.

JOIN은 특정 조건에 맞는 행들을 나란히 배치하여 관련 테이블들의 열을 결합합니다. UNION은 두 개의 SELECT 쿼리 결과를 세로로 쌓아 올려 행을 추가합니다. JOIN은 결과의 너비를 넓히고, UNION은 길이를 늘립니다.

예. ON 절은 AND로 연결된 여러 열을 테스트할 수 있습니다. 예를 들어 ON a.col1 = b.col1 AND a.col2 = b.col2와 같이 사용할 수 있습니다. 단일 열로는 행을 고유하게 식별할 수 없는 경우 복합 조건을 사용하는 것이 일반적입니다.

ON 절은 테이블을 일치시키는 방법을 정의하며 조인이 실행되는 동안 적용됩니다. WHERE 절은 결합된 결과를 나중에 필터링합니다. 외부 조인의 경우, 조건의 위치를 ​​변경하면 반환되는 행이 달라질 수 있습니다.

네. 접두사 없이 JOIN이라고 쓰면 기본적으로 INNER JOIN이 적용되어 일치하는 행만 반환합니다. OUTER JOIN 앞에 LEFT, RIGHT 또는 FULL을 추가하면 결과에 포함되는 일치하지 않는 행의 종류가 달라집니다.

예. GitHub 부조종사 자연어 프롬프트에서 INNER, LEFT, RIGHT 및 FULL OUTER JOIN 쿼리를 작성할 수 있습니다. 결과 집합이 의도한 것과 일치하는지 확인하기 위해 항상 ON 조건과 조인 유형을 검토하십시오.

AI 및 머신러닝 기반 어시스턴트는 올바른 조인 유형을 제안하고, 여러 테이블에 대한 ON 조건을 생성하며, 누락된 키나 의도치 않은 카르테시안 곱을 표시합니다. 또한 조인 열에 대한 인덱스를 추천할 수도 있습니다. 개발자는 실행하기 전에 각 제안 사항을 검증합니다.

이 게시물을 요약하면 다음과 같습니다.