제퍼넷 로고

SQL JOIN 이해: 내부, 외부, 전체, 왼쪽 및 오른쪽

시간

개요

SQL 조인은 공통 열을 기반으로 여러 테이블의 데이터를 결합하는 데 사용되는 기본 작업입니다. 효과적인 쿼리 및 데이터 조작을 위해서는 SQL 조인에 대한 확실한 이해가 중요합니다. 이 문서에서는 다양한 유형의 조인, 실제 사용 및 사용 시 중요한 고려 사항을 살펴봅니다.

내부 조인

내부 조인은 조인되는 두 테이블에서 일치하는 값이 있는 레코드를 검색합니다. 일치하지 않는 행을 제외하고 교차하는 행만 반환합니다. 내부 조인의 목적은 여러 테이블에서 관련 데이터를 찾는 것이므로 공통 키를 사용하여 여러 테이블에서 정보를 검색해야 할 때 유용합니다.

SQL에서 내부 조인을 사용할지 여부를 결정할 때 몇 가지 요인이 작용합니다. 반대로 내부 조인은 관련 데이터만 반환하므로 특히 효율적입니다. 이는 서로 다른 테이블의 데이터만 일치시키려는 쿼리에서 큰 이점이 될 수 있습니다.

내부 조인은 이후 작업에서 처리해야 하는 데이터의 양을 줄이는 데도 도움이 되므로 필요한 데이터만 전송하고 처리하여 잠재적으로 성능을 향상시킬 수 있습니다.

두 개의 테이블을 고려하십시오. CustomersOrders, 공통 열 포함 customer_id. 주문한 모든 고객을 검색하기 위해 다음과 같이 내부 조인을 사용할 수 있습니다.

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
INNER JOIN Orders
ON Customers.customer_id = Orders.customer_id;

이 쿼리는 다음과 같은 데이터를 반환할 수 있습니다.

고객 ID name 주문 아이디
1 홍길동 1001
2 제인 스미스 1002
1 홍길동 1003
3 메리 존슨 1004
2 제인 스미스 1005

왼쪽 조인

왼쪽 외부 조인이라고도 하는 왼쪽 조인은 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 일치하는 레코드를 반환합니다. 일치하는 항목이 없으면 오른쪽 테이블의 열에 대해 NULL 값이 반환됩니다. 이 유형의 조인은 사용 가능한 경우 다른 테이블의 관련 데이터를 포함하면서 한 테이블의 모든 레코드를 검색하려는 경우에 유용합니다.

동일한 "Customers" 및 "Orders" 테이블을 사용하여 왼쪽 조인을 사용하여 모든 고객 및 각각의 주문(있는 경우)을 검색할 수 있습니다.

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
LEFT JOIN Orders
ON Customers.customer_id = Orders.customer_id;
고객 ID name 주문 아이디
1 홍길동 1001
2 제인 스미스 1002
1 홍길동 1003
3 메리 존슨 1004
2 제인 스미스 1005
4 앨리스 윌리엄스 NULL

오른쪽 조인

오른쪽 외부 조인이라고도 하는 오른쪽 조인은 왼쪽 조인과 유사하지만 오른쪽 테이블에서 모든 레코드를 검색하고 왼쪽 테이블에서 일치하는 레코드를 검색합니다. 왼쪽 테이블의 일치하지 않는 값은 NULL 해당 열의 값. 오른쪽 조인은 왼쪽 조인보다 덜 일반적으로 사용되지만 주로 오른쪽 테이블의 데이터를 분석하거나 오른쪽 테이블의 레코드를 보존하고 왼쪽 테이블의 일치하는 레코드를 표시해야 하는 경우에 유용할 수 있습니다.

오른쪽 조인은 왼쪽 테이블에 일치 항목이 있는지 여부에 관계없이 오른쪽 테이블의 모든 데이터를 표시하려는 상황에서 특히 유용합니다. 이는 일부 제품이 아직 판매되지 않은 경우에도 모든 제품 및 해당 판매 데이터를 표시해야 하는 경우에 유용할 수 있습니다.

오른쪽 조인은 오른쪽 테이블에서 모든 레코드를 검색하고 왼쪽 테이블에서 일치하는 레코드를 검색합니다. 왼쪽 테이블에 일치하지 않는 값이 있으면 결과에 다음이 포함됩니다. NULL 해당 열의 값.

올바른 조인을 설명하기 위해 이전 예의 테이블을 뒤집는 것을 고려하십시오. 두 개의 테이블이 있습니다. CustomersOrders. 관련 고객이 없는 주문(예: 게스트 주문)을 포함하여 모든 주문 및 관련 고객을 검색하려고 합니다. 오른쪽 조인을 사용할 수 있습니다.

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
RIGHT JOIN Orders
ON Customers.customer_id = Orders.customer_id;
고객 ID name 주문 아이디
1 홍길동 1001
2 제인 스미스 1002
1 홍길동 1003
3 메리 존슨 1004
2 제인 스미스 1005
NULL NULL 1006

이 예에서 결과는 다음의 모든 레코드를 표시합니다. Orders 테이블에 일치 항목이 있는 경우 Customers 표에는 해당 고객 정보가 표시됩니다. 일치하는 항목이 없으면 customer_idname 필드에서 Customers 테이블이 될 것입니다 NULL.

전체/외부 조인

전체 외부 조인이라고도 하는 전체 조인은 두 테이블에서 일치하는 레코드와 일치하지 않는 레코드를 포함하여 두 테이블에서 모든 레코드를 검색합니다. 행이 반대 테이블에 일치하지 않으면 해당 열에 NULL 값이 채워집니다. 전체 조인은 특히 정보 손실 없이 두 테이블의 데이터를 분석하려는 경우 데이터를 포괄적으로 결합하는 데 유용합니다.

전체 조인을 시연하기 위해 두 테이블을 다시 살펴보겠습니다. CustomersOrders. 우리는 주문이 없는 고객 및 고객이 없는 주문을 포함하여 모든 고객 및 관련 주문을 검색하려고 합니다. 예를 들어 주문을 하지 않은 고객이나 고객과 연결되지 않은 주문을 식별하는 데 유용할 수 있습니다. 완전 조인으로 이를 달성할 수 있습니다.

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
FULL JOIN Orders
ON Customers.customer_id = Orders.customer_id;
고객 ID name 주문 아이디
1 홍길동 1001
2 제인 스미스 1002
1 홍길동 1003
3 메리 존슨 1004
2 제인 스미스 1005
NULL NULL 1006
4 앨리스 윌리엄스 NULL

JOIN 성능 최적화

SQL JOIN의 성능을 최적화하려면 다음 팁을 고려하십시오.

  1. 원하는 결과 집합에 따라 적절한 조인 유형을 사용합니다. 예를 들어 두 테이블에서 일치하는 레코드만 필요한 경우 INNER JOIN을 사용하고 테이블 중 하나에서 일치하지 않는 레코드를 포함하려는 경우 LEFT 또는 RIGHT JOIN을 사용합니다.

  2. 불필요한 데이터 검색을 최소화하기 위해 필요한 열만 선택합니다. 이를 통해 처리되는 데이터의 양을 줄이고 쿼리 성능을 향상시킬 수 있습니다.

  3. 가능하면 신청하세요. WHERE 데이터를 필터링하는 절 전에 테이블 합류. 이렇게 하면 조인해야 하는 행 수가 줄어들어 성능이 향상될 수 있습니다.

  4. 조인 성능을 크게 향상시킬 수 있으므로 조인 조건에 사용되는 열에 인덱스를 사용하는 것이 좋습니다.

모범 사례, 업계에서 인정하는 표준 및 포함된 치트 시트가 포함된 Git 학습에 대한 실습 가이드를 확인하십시오. 인터넷 검색 Git 명령을 중지하고 실제로 배움 이것!

이러한 모범 사례를 따르면 SQL JOIN이 효율적이고 적시에 원하는 결과를 반환하는지 확인할 수 있습니다.

SQL 조인에 대한 확실한 이해는 관계형 데이터베이스로 작업하는 데 중요합니다. 다양한 조인 유형과 그 사용법을 마스터하면 복잡한 데이터 세트를 쿼리하고 분석하는 데 SQL을 쉽고 빠르게 사용할 수 있습니다.

이 가이드에서는 다양한 SQL 조인 유형(Inner, Outer, Full, Left 및 Right)에 대해 설명하고 작동 방식, 장단점에 대한 통찰력을 제공합니다.

결론

SQL 조인을 사용하여 사용 사례, 장단점과 함께 여러 테이블의 데이터를 결합하는 방법에 대해 간단히 요약해 보겠습니다.

  • 내부 조인 두 테이블에서 일치하는 레코드만 검색합니다. 이것은 가장 일반적인 조인 유형이며 공유 키 또는 속성을 기반으로 데이터를 결합해야 할 때 유용합니다. 그러나 일치하는 레코드가 없으면 결과가 비어 있습니다.

  • 왼쪽 조인 왼쪽 테이블에서 모든 레코드를 검색하고 오른쪽 테이블에서 일치하는 레코드를 검색합니다. 오른쪽 테이블에 일치하는 레코드가 없으면 NULL 값이 반환됩니다. 이 유형의 조인은 오른쪽 테이블에 해당 데이터가 없더라도 왼쪽 테이블의 모든 레코드를 포함하려는 경우에 유용합니다.

  • 오른쪽 조인 오른쪽 테이블에서 모든 레코드를 검색하고 왼쪽 테이블에서 일치하는 레코드를 검색합니다. 왼쪽 조인과 마찬가지로 왼쪽 테이블에 일치하는 레코드가 없으면 NULL 값이 반환됩니다. 이 조인은 왼쪽 테이블에 해당 데이터가 없더라도 오른쪽 테이블의 모든 레코드를 포함하려는 경우에 유용합니다.

  • 전체 조인 일치하는 레코드가 있는지 여부에 관계없이 두 테이블에서 모든 레코드를 검색합니다. 일치하는 항목이 없으면 누락된 데이터에 대해 NULL 값이 반환됩니다. 이 조인 유형은 두 테이블 사이에 일치하는 항목이 없더라도 두 테이블의 데이터를 결합하고 모든 레코드를 포함하려는 경우에 유용합니다.

이러한 조인 유형과 용도를 이해하면 데이터를 효율적으로 조작하고 분석할 수 있습니다. 적절한 조인 유형을 선택하는 것은 특정 사용 사례와 원하는 결과에 따라 달라집니다. 이러한 조인 유형을 마스터하면 복잡한 데이터 분석 작업을 더 잘 처리하고 SQL 쿼리를 최적화할 수 있습니다.

spot_img

최신 인텔리전스

라이프사이VC

VC 카페

spot_img