요약 :이 자습서에서는 SQL INNER JOIN 문을 사용하여 여러 테이블에서 데이터를 쿼리하는 방법을 배웁니다.
이전 자습서에서는 SELECT 문을 사용하여 단일 테이블에서 데이터를 쿼리하는 방법을 배웠습니다. 그러나 분석을위한 완전한 결과 세트를 갖기 위해 여러 테이블의 데이터를 쿼리하려는 경우가 많습니다. 여러 테이블에서 데이터를 쿼리하려면 조인 문을 사용합니다.
SQL은 내부 조인, 외부 조인 (왼쪽 외부 조인 또는 왼쪽 조인, 오른쪽 외부 조인 또는 오른쪽 조인, 완전 외부 조인)과 같은 여러 유형의 조인을 제공합니다. ) 및 자체 조인. 이 튜토리얼에서는 INNER JOIN
절을 사용하는 방법을 보여줍니다.
SQL INNER JOIN 구문
다음은
구문 :
1
2
3
4
5
|
선택
column1, column2
FROM
table_1
INNER JOIN table_2 ON join_condition;
|
위의 구문을 자세히 살펴 보겠습니다.
-
table_1
및table_2
를 조인 테이블이라고합니다. - 각 행에 대해
table_1
에서 쿼리는table_2
에서 조인 조건을 충족하는 해당 행을 찾습니다. 해당 행이 발견되면 쿼리는 두 테이블의 데이터를 포함하는 행을 반환합니다. 그렇지 않으면table_1
의 다음 행을 검사하고table_1
의 모든 행을 검사 할 때까지이 프로세스가 계속됩니다.
두 개 이상의 테이블을 결합하는 경우 동일한 논리가 적용됩니다.
SQL INNER JOIN 예
SQL INNER JOIN – 두 테이블에서 데이터 쿼리
이 예에서는 샘플 데이터베이스의 products
및 categories
테이블을 사용합니다. 다음 그림은 데이터베이스 다이어그램을 보여줍니다.
위 다이어그램에서 :
- 한 카테고리에 여러 제품이있을 수 있습니다.
- 하나의 제품은 하나의 카테고리에만 속합니다.
따라서 테이블과 products
테이블의 행. 두 테이블 간의 링크는 categoryid
열입니다.
두 테이블에서 다음 데이터를 쿼리해야합니다.
-
products
테이블의productID
,productName
. - iv
categories
테이블의 id = “b32d50b7b9″>
.
다음 쿼리는 두 테이블 모두에서 데이터를 검색합니다.
1
2
3
4
5
6
|
SELECT
productID, productName, categoryName
FROM
제품
INNER JOIN
categories ON categories.categoryID = products.categoryID;
|
조인 조건은 표현식으로 ON
키워드 뒤의 INNER JOIN
절에 지정됩니다.
1
|
categories.categoryID = products.categoryID
|
products
테이블에서 쿼리는 categories
테이블에서 동일한 categoryid.
두 행 사이에 일치하는 항목이있는 경우 해당 행을 찾습니다. 두 테이블 모두 SELECT 절에 지정된 열 (예 : 제품 ID, 제품 이름 및 범주 이름)을 포함하는 행을 반환합니다. 그렇지 않으면 products
테이블의 다음 행을 확인하여 categories
테이블에서 일치하는 행을 찾습니다. 이 프로세스는 제품 테이블의 마지막 행이 검사 될 때까지 계속됩니다.
SQL INNER JOIN – 세 테이블에서 데이터 쿼리
3 개의 테이블을 조인하는 데 동일한 기술을 사용할 수 있습니다.다음 쿼리는 productID
, productName
, categoryName
및 products
, categories
및 suppliers
테이블 :
1
2
3
4
5
6
7
8
9
10
11
|
선택
productID,
productName,
categoryName,
companyName AS 공급자
FROM
제품
INNER JOIN
카테고리의 카테고리입니다. categoryID = products.categoryID
내부 가입
supplier.supplierID = products.supplierID
|
암시 적 SQL 내부 조인
아래에 표시된 것처럼 암시 적 내부 조인이라는 다른 형식의 INNER JOIN
가 있습니다.
1
2
3
4
5
6
7
|
선택
column1, column2
FROM
table_1,
table_2
WHERE
join_condition;
|
이 양식에서는 모든 결합 된 테이블을 FROM
절과 SELECT
문의 WHERE 절에 조인 조건을 넣습니다. 다음과 같이 암시 적 INNER JOIN
를 사용하여 위의 쿼리 예제를 다시 작성할 수 있습니다.
1
2
3
4
5
6
7
|
SELECT
productID, productName, categoryName
FROM
제품,
카테고리
WHERE
products.categoryID = categories.categoryID;
|