SQLShack (한국어)

이 문서는 예제와 함께 전체 개요를 제공합니다. SQL 외부 조인 (전체, 오른쪽 및 왼쪽 외부 조인 포함)은 물론 SQL 왼쪽 및 오른쪽 외부 조인 간의 통합을 포함합니다.

다중에서 데이터를 가져 오는 프로세스를 이해하는 것이 중요합니다. 테이블. 초보자는 SQL Server의 조인에 대한 아이디어가 없을 수 있습니다. 이 팁에서는 SQL 조인에 대한 개요를 살펴보고 구문, 예제 및 사용 사례와 함께 SQL OUTER JOIN을 배웁니다.

관계형 데이터베이스 시스템에서는 원칙을 따르는 것이 가장 좋습니다. 기본적으로 큰 테이블을 작은 테이블로 분할합니다. select 문에서 조인을 사용하여 이러한 테이블에서 데이터를 검색 할 수 있습니다. 테이블을 조인하고 결과 집합의 이러한 테이블에서 필수 필드를 가져올 수 있습니다. 이러한 테이블에는 서로 관련되는 몇 가지 공통 필드가 있어야합니다. 여러 데이터베이스에 분할 된 데이터를 찾을 수 있으며 때로는 매우 복잡한 구조이기도합니다. 조인을 사용하면 여러 테이블, 데이터베이스의 데이터를 사용자 친화적 인 방식으로 결합하고이 데이터를 애플리케이션에 나타낼 수 있습니다.

다음 이미지를 사용하여 SQL JOIN을 나타낼 수 있습니다.

SQL Server에서 많은 SQL 조인 유형을 사용할 수 있습니다. 다음 이미지에서 SQL 조인 범주를 볼 수 있습니다.

다음 섹션에서 SQL 외부 조인을 자세히 살펴 보겠습니다.

SQL OUTER JOIN 개요

SQL OUTER JOIN을 사용하여 테이블 간의 행을 일치시킵니다. 테이블 중 하나 또는 둘 모두에서 일치하지 않는 행과 함께 일치 행을 가져올 수 있습니다. 다음과 같은 세 가지 유형의 SQL OUTER JOINS가 있습니다.

  1. SQL Full Outer Join
  2. SQL Left Outer Join
  3. SQL Right Outer Join

각각의 SQL 외부 조인을 예제로 살펴 보겠습니다.

SQL 전체 외부 조인

SQL 전체 외부 조인에서는 두 테이블의 모든 행이 포함됩니다. . 일치하지 않는 행이 있으면 NULL 값을 표시합니다.

예제를 사용하여 효율적으로 이해할 수 있습니다. 샘플 테이블을 생성하고 여기에 데이터를 삽입하겠습니다.

두 테이블의 다음 데이터 모델을 참조 할 수 있습니다.

다음 스크립트를 사용하여 직원 테이블에 데이터를 삽입합니다.

Departments 테이블에 데이터 삽입

벤 다이어그램을 사용하여 두 테이블 간의 논리적 관계를 나타낼 수 있습니다. 벤 다이어그램에는 여러 개의 겹치는 원이 포함되며 각 원은 엔티티 또는 테이블을 나타냅니다. 벤 다이어그램의 공통 영역 또는 겹치는 영역은 두 테이블 간의 공통 값을 나타냅니다.

예를 들어, 다음 스크린 샷에는 두 개의 겹치는 원이 있습니다. 각 서클은 테이블 (직원 및 부서)을 재전송했습니다. 다음 예제를 사용하여 FULL 외부 조인을 이해하겠습니다.

두 테이블 모두에 공통 필드 (EmpID)가 있습니다. 따라서 테이블을이 열과 조인 할 수 있습니다. 다음 쿼리에서 두 테이블의 EMPID 열에 부서와 직원 테이블 간의 FULL OUTER JOIN을 정의했습니다.

1
2
3

SELECT *
FROM Employee
Employee.EmpID = Departments.EmpID의 전체 외부 참여 부서;

SQL Full Outer Join은 출력에 다음 행을 제공합니다.

  • 두 테이블 간의 일치하는 행
  • 두 테이블의 일치하지 않는 행 (NULL 값) )

Full Outer Join 쿼리 출력을 반환하기 위해이 쿼리를 실행 해 보겠습니다. 다음과 같은 출력을 얻습니다.

NULL 값이있는 레코드도 몇 개 볼 수 있습니다. 벤 다이어그램을 사용하여 더 나은 방법으로 이해해 봅시다.

다음 스크린 샷에서 다음 정보를 볼 수 있습니다.

  • EmpID 1, 2,3,4,5 , 6,10은 Employee 및 Departments 테이블에 모두 있습니다. Full Outer Join 쿼리 출력에서 두 테이블의 데이터가있는 모든 행을 가져옵니다.
  • Employee 테이블에는 있지만 Departments 테이블에는없는 EmpID 7, 8, 9가 있습니다. departments 테이블에 일치하는 행은 포함되지 않습니다. 따라서; 해당 레코드에 대해 NULL 값을 얻습니다.

이제 데모 목적으로 Departments 테이블에 레코드를 하나 더 삽입하겠습니다. . 이 쿼리에서는 Employee 테이블에 존재하지 않는 EmpID 11을 삽입합니다.

SQL Full Outer Join 쿼리를 다시 실행합니다. 다음 이미지에는 NULL 값이있는 추가 행이 하나 있습니다. 직원 테이블에 EmpID 11과 일치하는 행이 없습니다.이로 인해 출력에 NULL 값이 표시됩니다.

요약하면 다음 벤 다이어그램을 사용하여 SQL Full Outer Join을 나타낼 수 있습니다. Full Outer Join의 출력에서 강조 표시된 영역에 표시된 내용을 얻습니다.

SQL FULL OUTER JOIN 및 WHERE 절

SQL FULL OUTER JOIN과 함께 WHERE 절을 추가하여 두 조인 테이블간에 일치하는 데이터가없는 행을 가져올 수 있습니다.

다음 쿼리에서 where 절을 다음에 추가합니다. NULL 값이있는 레코드 만 표시합니다.

1
2
3
4
5

SELECT *
From Employee
Employee.EmpID = Departments.EmpID
WHERE Employee.EmpID가 NULL입니다.
OR Departments.EmpID가 NULL입니다.

이 명령을 실행하고 출력을보십시오. Employee 또는 Departments 테이블에서 일치하지 않는 행만 반환합니다.

SQL LEFT OUTER JOIN

SQL Left Outer Join에서는 출력에 다음 행이 표시됩니다.

  • 두 테이블간에 일치하는 행의 출력을 제공합니다.
  • 일치하는 레코드가없는 경우 왼쪽 테이블에서 NULL 값이있는 레코드도 표시됩니다.

다음 코드를 실행하여 SQL LEFT OUTER JOIN 출력을 반환합니다.

1
2
3

SELECT *
From Employee
LEFT OUTER Join Departments ON Employee.EmpID = Departments.EmpID

다음 이미지에서 EmpID 7,8 및 9에 대해 NULL 값이 있음을 알 수 있습니다.이 EmpID는 오른쪽에 없습니다. 부서 테이블.

Join 문에서 테이블 배치 위치를 기록해야합니다. 현재 왼쪽에는 Employee 테이블이 있고 오른쪽에는 Departments 테이블이 있습니다.

쿼리를 다시 작성하고 쿼리에서 테이블의 위치를 바꿔 보겠습니다. 이 쿼리에서는 Department 테이블이 왼쪽에 있으므로 Left Outer Join은이 테이블의 값을 확인하고 불일치시 NULL 값을 반환해야합니다.

다음 스크린 샷에서 다음을 수행 할 수 있습니다. Employee 테이블에서 EmpID 11을 사용할 수 없기 때문입니다.

As 요약하면 다음 벤 다이어그램을 사용하여 SQL Left Outer Join을 나타낼 수 있습니다. SQL Left Outer Join의 출력에서 강조 표시된 영역을 얻습니다.

SQL Right OUTER JOIN

SQL Right Outer Join에서는 출력에 다음 행이 표시됩니다.

  • 두 테이블간에 일치하는 행의 출력을 제공합니다.
  • 일치하는 레코드가없는 경우 오른쪽 테이블에 NULL 값이있는 레코드도 표시됩니다.

다음 쿼리를 실행하여 Right Outer Join의 출력을 가져옵니다.

1
2
3

SELECT *
FROM Employee
RIGHT OUTER Join Departments on Employee.EmpID = Departments.EmpID

다음 이미지에서 NULL 값이있는 한 행과 함께 일치하는 모든 행을 가져 오는 것을 볼 수 있습니다. Null 값 행은 Employee 테이블에 없기 때문에 EmpID 11을 갖습니다. Join에서 Department 테이블의 위치가 올바른 위치에 있음을 알 수 있습니다. 이로 인해 Department 테이블 (오른쪽)과 일치하지 않는 Employee 테이블 (왼쪽 위치)에서 값을 가져 오지 않습니다.

앞에서 강조한 것처럼 테이블 위치는 JOIN 문에서 중요합니다. 테이블 위치를 변경하면 출력이 달라집니다. 다음 쿼리에는 Departments 테이블 (왼쪽)과 Employee 테이블 (오른쪽)이 있습니다.

1
2
3
4

SELECT *
부서에서
오른쪽 외부 부서에서 직원 가입 EmpID = Employee.EmpID

위 쿼리에서 테이블 위치를 바꾼 후 Right Outer Join의 차이를 확인할 수 있습니다.

요약하면 다음 벤 다이어그램을 사용하여 SQL Right Outer Join을 나타낼 수 있습니다. SQL Right Outer Join의 출력에서 강조 표시된 영역이 있습니다.

SQL Left Outer Join과 SQL Right Outer의 합집합 조인

이전 예에서는 SQL Left Outer Join과 SQL Right Outer Join을 다른 예와 함께 살펴 보았습니다. SQL Left Outer Join과 SQL Right Outer Join의 결과를 결합 할 수 있습니다. SQL Full Outer Join의 출력을 제공합니다.

SQL Full Outer Join의 대안으로 다음 쿼리를 실행합니다.

1
2
3
4
5
6
7

SELECT *
From Employee
왼쪽 외부 부서 가입 켜기 Employee.EmpID = Departments.EmpID
UNION ALL
SELECT *
From Employee
RIGHT OUTER JOIN Departments on Employee.EmpID = Departments.EmpID

다음 출력에서는 모든 일치하는 레코드, 왼쪽 테이블의 일치하지 않는 레코드 및 오른쪽 테이블의 일치하지 않는 레코드. SQL Full Outer Join의 출력과 유사합니다.

결론

이 기사에서는 SQL 외부 조인과 그 유형을 예제와 함께 살펴 보았습니다. 이 기사가 도움이 되었기를 바랍니다. 아래 의견에 자유롭게 의견을 보내주십시오.

  • 작성자
  • 최근 게시물
인도 구르 가온에서 MCSA 인증 및 Microsoft 인증 트레이너로서 13 년의 경력을 보유한 Rajendra는 성능 최적화, 모니터링, 고 가용성, 재해 복구 전략 및 구현에 중점을 둔 다양한 대기업에서 근무합니다. 그는 SQL Server, Azure, MySQL, Linux, Power BI, 성능 조정, AWS / Amazon RDS, Git 및 현재까지 1,000 만 명이 넘는 독자가 시청 한 관련 기술에 대한 수백 개의 권위있는 기사의 저자입니다.
그는 SQL Server Always On 가용성 그룹에 대한 50 부작 시리즈를 통해 단일 주제에 대한 가장 큰 무료 온라인 기사 모음을 만든 사람입니다. SQL Server 커뮤니티에 대한 공헌을 바탕으로 2020 년과 2021 년 SQLShack에서 지속적으로 권위있는 “올해의 최우수 저자”를 비롯한 다양한 상을 수상했습니다.
Raj는 항상 새로운 도전에 관심이 있으므로 컨설팅이 필요한 경우 그의 글에서 다루는 주제에 대한 도움은 [email protected]으로 연락 할 수 있습니다.
Rajendra Gupta의 모든 게시물보기

Rajendra Gupta의 최신 게시물 (전체보기)
  • SQL Server Always On 가용성의 세션 시간 초과 그룹-2021 년 2 월 8 일
  • AWS RDS SQL Server에 대한 마이너 및 메이저 버전 업그레이드 수행-2021 년 1 월 29 일
  • AWS RDS PostgreSQL 인스턴스 배포-2021 년 1 월 27 일

Write a Comment

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다