SQL 외부 조인

Sql Oebu Join



조인은 관계형 데이터베이스의 가장 식별 가능한 기능 중 하나임은 말할 필요도 없습니다. 조인을 사용하면 관련 조건을 기반으로 하나 이상의 테이블의 데이터를 결합하여 일관된 데이터 작업을 만들 수 있습니다.

SQL에는 다양한 유형의 조인이 있으며, 각 조인은 참여 테이블이나 결과 집합의 데이터를 처리하는 고유한 방법을 가지고 있습니다. SQL에서 가장 일반적인 조인 유형 중 하나는 OUTER JOIN입니다.







SQL의 OUTER JOIN은 관련 테이블에서 일치하는 모든 행뿐만 아니라 하나 또는 두 테이블 모두에서 일치하지 않는 행을 검색합니다. NULL 값이나 누락된 세트가 포함된 테이블을 처리할 때 유용합니다.



이러한 조인의 기능, 작동 방식, SQL 데이터베이스에서 이를 사용하는 방법을 자세히 살펴보겠습니다.



요구사항:

이 튜토리얼에서는 MySQL 8.0을 사용하고 Sakila 샘플 데이터베이스를 사용합니다. 그러나 적용 가능하다고 생각되는 다른 데이터 세트를 자유롭게 사용해 보세요.





외부 조인의 유형

SQL에는 OUTER JOINS의 세 가지 주요 유형이 있습니다. 이러한 유형의 OUTER JOINS는 다음과 같습니다.

  1. 왼쪽 외부 조인

  2. LEFT OUTER JOINS의 경우 조인은 왼쪽 테이블에서 모든 행을 검색하고 오른쪽 테이블에서 일치하는 행만 검색합니다. 오른쪽 테이블에 일치하는 행이 없으면 조인은 오른쪽 테이블의 열에 대해 NULL 값을 반환합니다.



  3. 오른쪽 외부 조인

  4. 이는 RIGHT OUTER JOIN과 유사합니다. 그러나 오른쪽 테이블에서는 모든 행을 검색하지만 왼쪽 테이블에서는 일치하는 행만 검색합니다. 왼쪽 테이블에 일치하는 행이 없으면 조인에는 왼쪽 테이블 열에 대한 NULL 값이 포함됩니다.

  5. 전체 외부 조인

  6. 마지막으로 FULL OUTER JOINS가 있습니다. 이 유형의 조인은 RIGHT 및 LEFT 외부 조인을 모두 결합합니다. 결과적으로 조인은 왼쪽 또는 오른쪽 테이블에 일치하는 항목이 있을 때 모든 행을 검색합니다. 일치하는 항목이 없으면 조인은 일치하는 항목이 없는 테이블의 열에 대해 NULL 값을 반환합니다.

SQL OUTER JOIN 구문

다음은 SQL OUTER JOIN 구문을 표현한 것이다. 그러나 대상 데이터베이스 엔진에 따라 구문이 약간 다를 수 있다는 점을 명심하는 것이 좋습니다.

다음은 일반적인 구조입니다.

열 선택
테이블1에서
[왼쪽 | 맞다 | FULL] OUTER JOIN 테이블2
ON table1.column_name = table2.column_name;

SQL의 OUTER JOIN 구문은 매우 간단합니다.

예:

SQL에서 다양한 유형의 OUTER JOINS를 적용하는 방법에 대한 몇 가지 샘플 사용법을 살펴보겠습니다.

앞서 언급한 대로 데모를 위해 Sakila 샘플 데이터베이스를 사용합니다. 이 경우 '고객' 및 '지불' 테이블을 사용합니다.

예 1: 왼쪽 외부 조인

OUTER JOIN부터 시작해 보겠습니다. 가능한 경우 결제 정보와 함께 모든 고객 정보를 검색한다고 가정해 보겠습니다.

모든 고객 정보(왼쪽)와 가능한 경우 결제 정보(오른쪽)를 원하므로 LEFT OUTER JOIN을 적용할 수 있습니다.

고객이 결제를 하지 않은 경우 조인은 결제 관련 열에 NULL 값을 표시합니다.

예는 다음과 같습니다.

선택하다
c.고객_ID,
c.이름,
c.성,
금액,
p.결제_날짜
에서
고객 C
LEFT OUTER JOIN 결제 p

c.customer_id = p.customer_id;

주어진 쿼리에는 'customer' 테이블의 'customer_id', 'first_name' 및 'last_name' 열이 포함됩니다. 또한 '결제' 테이블에 금액과 '결제_날짜'도 포함됩니다.

그런 다음 'customer_id'를 기반으로 'customer' 테이블과 '결제' 테이블 사이에 LEFT OUTER JOIN을 수행합니다.

여기에는 결제 세부정보(있는 경우)와 함께 모든 고객(결제 여부에 관계없음)이 포함됩니다.

출력 예는 다음과 같습니다.

예 2: 오른쪽 외부 조인

이제 RIGHT OUTER JOIN으로 넘어가겠습니다. 이 경우 모든 결제 정보와 관련 고객을 포함하고 싶다고 가정해 보겠습니다.

이 경우 고객이 결제를 하면 해당 고객의 세부정보가 조인에 표시됩니다. 연결된 고객이 없는 결제가 있는 경우 고객 관련 열에 NULL 값이 표시됩니다.

선택하다
c.고객_ID,
c.이름,
c.성,
금액,
p.결제_날짜
에서
고객 C
RIGHT OUTER JOIN 결제 p

c.customer_id = p.customer_id;

결과 세트는 다음과 같습니다.

예 3: 전체 외부 조인

반면에 FULL OUTER JOIN은 모든 고객 정보와 결제를 검색합니다. 여기에는 모든 고객과 모든 결제가 포함되며 테이블 간에 일치하는 항목이 없는 경우 NULL 값이 표시됩니다.

선택하다
c.고객_ID,
c.이름,
c.성,
금액,
p.결제_날짜
에서
고객 C
FULL OUTER JOIN 결제 p

c.customer_id = p.customer_id;

MySQL은 기본적으로 FULL OUTER JOIN을 지원하지 않는다는 점을 명심하는 것이 좋습니다. LEFT JOIN, UNION 및 RIGHT JOIN을 사용하여 주짓수 마법을 수행해야 합니다. 꽤 짜증나는 일이라고 덧붙일 수도 있습니다.

결론

이 튜토리얼에서는 OUTER JOINS에 대한 모든 것을 배웠습니다. SQL에서 OUTER JOIN이 무엇인지, OUTER JOINS의 종류와 이러한 OUTER JOINS의 사용법에 대한 예를 배웠습니다.