SQL에서 세 개의 테이블 조인

Sqleseo Se Gaeui Teibeul Join



관계형 데이터베이스에서는 여러 테이블에서 데이터를 검색하는 작업이 매우 일반적입니다. 대상 결과에 따라 여러 테이블을 단일 단위로 결합하고 결과 데이터를 가져오는 작업이 포함됩니다.

조인과 관련하여 우리 대부분은 주로 두 개의 테이블 등의 제한으로 작업합니다. 그러나 보다 의미 있는 데이터 레이아웃과 통찰력을 얻으려면 세 개의 테이블을 조인해야 하는 것이 일반적입니다. 예를 들어 영화 목록, 해당 대여 인벤토리 및 실제 대여 세부정보를 검색하려는 경우를 생각해 보세요. 영화, 인벤토리, 대여 세부정보 등 각 단위는 개별 테이블에 있습니다.

이 자습서에서는 SQL에서 세 개의 테이블을 조인하는 데 사용할 수 있는 다양한 조인 및 기술을 안내합니다.







요구사항:

데모 목적으로 MySQL 버전 80과 Sakila 샘플 데이터베이스를 사용하겠습니다. 계속하려면 MySQL 서버에 Sakila 데이터베이스를 다운로드하고 설정할 수 있습니다. 적용 가능하다고 생각되는 다른 데이터 세트를 자유롭게 사용해 보세요.



SQL의 조인 유형

조인 적용에 앞서 SQL 데이터베이스에서 사용할 수 있는 다양한 유형의 조인에 대해 논의하는 것부터 시작하겠습니다.



내부 조인

첫 번째 조인 유형은 INNER JOIN입니다. 이 유형의 조인은 두 테이블 모두에서 일치하는 값을 포함하는 행만 반환합니다. 이는 매우 일반적인 조인 유형이며 두 테이블을 조인할 때 가장 단순합니다.





구문은 다음과 같습니다.

열 선택

테이블1에서

내부 조인 테이블 2 table1.column_name = table2.column_name;

왼쪽 조인

LEFT JOIN의 경우 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환합니다. 오른쪽 테이블에 일치하는 값이 없으면 조인은 해당 위치에 NULL 값을 추가합니다.



구문은 다음과 같습니다.

열 선택

테이블1에서

왼쪽 조인 테이블2 table1.column_name = table2.column_name;

바로 가입

짐작할 수 있듯이 RIGHT JOIN은 LEFT JOIN의 반대입니다. 이 유형의 조인은 오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행만 반환합니다. 왼쪽 테이블에 일치하는 행이 없으면 조인은 NULL 값을 테이블에 추가합니다.

다음은 RIGHT JOIN의 구문입니다.

열 선택

테이블1에서

오른쪽 조인 테이블 2 table1.column_name = table2.column_name;

전체 외부 조인

SQL 데이터베이스에서 접하게 될 다음 유형의 조인은 FULL OUTER JOIN입니다. 이 유형의 조인은 오른쪽 또는 왼쪽 테이블에 일치하는 항목이 있는 경우 모든 행을 반환합니다. 둘 중 하나에 일치하는 값이 없으면 일치하지 않는 테이블의 열에 대해 NULL을 반환합니다.

다음은 FULL OUTER JOIN의 구문을 보여줍니다.

열 선택

테이블1에서

전체 외부 조인 테이블 2 table1.column_name = table2.column_name;

모든 데이터베이스 엔진이 FULL OUTER JOINS를 지원하는 것은 아니라는 점을 명심하는 것이 좋습니다. 이를 달성하려면 다른 유형의 JOINS 또는 하위 쿼리를 사용해야 할 수도 있습니다.

예:

이러한 유형의 조인을 사용하여 SQL에서 세 테이블을 조인하는 방법에 대한 몇 가지 예를 살펴보겠습니다.

예 1: INNER JOIN 사용

INNER JOIN으로 시작합니다. 영화 목록, 대여 인벤토리 및 해당 대여 세부정보를 검색한다고 가정해 보겠습니다.

다음 예와 같이 연결된 테이블에서 여러 INNER JOINS를 사용할 수 있습니다.

선택하다

영화.제목,

Inventory.inventory_id,

임대.임대_날짜

에서

영화

내부 조인 인벤토리

film.film_id = Inventory.film_id

INNER JOIN 임대

Inventory.inventory_id = 임대.inventory_id;

주어진 예제 쿼리에서는 'film_id' 열을 기반으로 영화 및 인벤토리 테이블을 조인하는 것부터 시작합니다. 그런 다음 결과 세트를 가져와 'inventory_id' 열을 기반으로 임대 테이블과 조인합니다.

이렇게 하면 기본 INNER JOIN을 사용하여 세 개의 테이블을 조인할 수 있습니다. 결과 세트는 다음과 같습니다.

예 2: INNER JOIN 및 LEFT JOIN 사용

이제 영화 목록, 대여 인벤토리 목록(있는 경우) 및 관련 대여 세부정보가 필요하다고 가정해 보겠습니다.

또한 영화에 대여 인벤토리가 없더라도 결과에 포함되도록 하고 싶습니다. INNER JOIN과 LEFT JOIN이 작동하는 곳입니다.

다음 예를 고려하십시오.

선택하다

영화.제목,

Inventory.inventory_id,

임대.임대_날짜

에서

영화

내부 조인 인벤토리

film.film_id = Inventory.film_id

LEFT JOIN 임대

Inventory.inventory_id = 임대.inventory_id;

이 예에서는 INNER JOIN을 사용하여 영화 및 인벤토리 테이블을 조인하여 사용 가능한 인벤토리가 포함된 타이틀을 가져오도록 합니다. 그런 다음 LEFT JOIN을 사용하여 대여 테이블에 조인하여 사용 가능한 경우 대여 세부 정보를 가져오고, 대여 기록이 없는 타이틀의 경우 NULL을 가져옵니다.

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

결론

이 튜토리얼에서는 SQL의 다양한 유형의 JOINS, 작동 방식, 이를 사용하여 세 개의 테이블을 결합하는 방법에 대해 배웠습니다.