내부 및 외부 조인은 둘 이상의 테이블에서 데이터를 결합하는 데 사용됩니다. 그러나 몇 가지 주요 차이점이 있습니다! 이 기사를 읽고 각 명령의 장점과 사용시기를 알아보십시오.
이 내용과 다른 강의를 최대한 활용하려면 예제를 사용하여 연습하십시오!
모두 이 레슨의 예제는 Microsoft SQL Server Management Studio 및 AdventureWorks2012 데이터베이스를 기반으로합니다. 내 가이드 SQL Server 시작하기를 사용하여 이러한 무료 도구를 사용하십시오.
내부 조인과 외부 조인의 차이점은 무엇입니까?
내부 및 외부 조인은 둘 또는 조인 조건을 사용하여 더 많은 테이블을 단일 결과로 만듭니다. 조인 조건은 각 테이블의 열이 서로 일치하는 방식을 지정합니다. 대부분의 경우 목표는 테이블간에 동일한 값을 찾고 일치하는 값을 포함하는 것입니다.
가장 일반적인 경우는 한 테이블의 외래 키를 다른 테이블의 기본 키와 일치시킬 때입니다. , 예를 들어 값을 조회하기 위해 및 ID를 사용할 때입니다.
내부 및 외부 조인 모두 일치 조건이 성공적 일 때 두 테이블의 행을 포함하지만 거짓 일치 조건을 처리하는 방법이 다릅니다.
내부 조인에는 일치하지 않는 행이 포함되지 않습니다. 반면, 외부 조인에는 그것들이 포함됩니다.
각 메커니즘에 대해 조금 더 자세히 살펴 보겠습니다.
내부 조인 메커니즘
결과를 반환하는 데 내부 조인이 사용됩니다. 둘 이상의 테이블에서 행을 결합합니다.
조인 조건이없는 가장 간단한 경우 내부 조인은 한 테이블의 모든 행을 다른 테이블의 행과 결합합니다. 첫 번째 테이블에 3 개의 행이 있고 두 번째 테이블에 4 개의 행이 있으면 최종 결과에는 12 개 (3 x 4 = 12)가 포함됩니다!
조인 조건의 목적은 결합되는 행을 제한하는 것입니다. 대부분의 경우 열과 일치하는 행으로 제한됩니다.
한 사람이 두 개 이상의 전화 번호를 가지고있는 경우 두 개 이상의 일치가 이루어집니다. 이를 통해 각 사용자에 대해 반환 된 행보다 더 많은 행을 얻을 수 있음을 알 수 있습니다.
반대로 사람에게 전화 번호가 없으면 PersonPhone에 항목이없고 일치 항목이 없습니다. 일치하는 사람 만 포함되므로 특정 사람은 결과에 포함되지 않습니다.
예를 들어 보겠습니다.
내부 조인 예
가정 HR 관리자가 전화 번호부를 생성하려고합니다. 그들은 그 사람의 이름, 성, 직함, 전화 번호를 원합니다. 이것을 생성하기 위해 어떤 쿼리를 사용할 수 있습니까?
다음은 트릭을 수행하는 쿼리입니다.
SELECT P.FirstName, P.LastName, P.Title, PH.PhoneNumberFROM Person.Person AS P INNER JOIN Person.PersonPhone AS PH ON P.BusinessEntityID = PH.BusinessEntityID AND PH.PhoneNumberTypeID = 3ORDER BY P.LastName
INNER JOIN은 어떤 테이블을 지정합니다. 가입하고 그렇게하기위한 일치 조건. 조건 PH.Phone NumberTyeID = 3은 쿼리를 직장 번호로 제한합니다.
위를 실행하면 다음과 같은 결과가 나타납니다.
내부 조인은 일치 조건이있는 행만 반환합니다. 사실이다. 이 예에서 BusinessEntityID가 일치하지 않는 행은 포함되지 않습니다. 전화 번호가없는 사람은 해당 직원이 목록에없는 경우 문제가 될 수 있습니다.
이러한 직원을 포함하려면 외부 조인을 사용할 수 있습니다.
외부 조인 메커니즘
외부 조인은 둘 이상의 테이블에서 행을 결합하여 결과를 반환하는 데 사용됩니다. 그러나 내부 조인과 달리 외부 조인은 조인 조건이 실패하더라도 지정된 하나의 테이블에서 모든 행을 반환합니다.
위의 전화 번호부 예를 살펴보십시오. HR 관리자가 직장 전화 번호가 있는지 여부에 관계없이 모든 직원을 나열하려면 외부 조인을 사용하면됩니다.
SELECT P.FirstName, P.LastName, P.Title, PH.PhoneNumberFROM Person.Person AS P LEFT OUTER JOIN Person.PersonPhone AS PH ON P.BusinessEntityID = PH.BusinessEntityID AND PH.PhoneNumberTypeID = 3ORDER BY P.LastName
이 기사에서 왼쪽 및 오른쪽 외부 조인에 대해 자세히 알아보십시오. 지금은 LEFT OUTER JOIN을 사용할 때 FROM 절의 테이블에 대한 모든 행이 결과에 포함된다는 점을 이해하십시오. other table.
일치하는 항목이 없으면 NULL이 열에 배치됩니다.
아래에서이 작업을 확인할 수 있습니다.
예제에서 Catherine Abel의 PhoneNumber가 NULL입니다. 이는 Catherine의 직장 번호가 나열되지 않았고 조인 중에 일치하는 항목이 없기 때문입니다.
이게 내부 조인이라면이 행이 결과에 포함되지 않았을 것입니다.