-
SQL JOIN 기초: INNER JOIN과 LEFT JOIN, 그리고 JOIN의 의미SQL 2024. 11. 13. 10:11
SQL에서 테이블 간의 관계를 설정하고 데이터를 결합하는 JOIN 문법은 매우 중요한 기초 기능입니다. 테이블을 조인하면 여러 테이블에 흩어진 데이터를 조합하여 유의미한 정보를 얻을 수 있습니다. 여기서는 가장 기본적인 INNER JOIN과 LEFT JOIN을 중심으로 설명하겠습니다.
1. JOIN의 기본 개념
JOIN은 두 개 이상의 테이블을 조건에 맞게 결합하는 SQL의 기능입니다. 이때 JOIN에 사용되는 주요 키워드는 ON과 WHERE이며, 원하는 조건에 맞는 행을 필터링하여 데이터를 결합할 수 있습니다. JOIN에는 여러 유형이 있지만, 일반적으로 사용되는 것에는 INNER JOIN, LEFT JOIN, RIGHT JOIN이 있습니다.
JOIN은 아래와 같은 방식으로 두 테이블을 옆으로 결합합니다:
sql코드 복사SELECT * FROM Table_A INNER JOIN Table_B ON Table_A.id = Table_B.orderid위 코드에서는 Table_A가 기본 테이블이며, Table_B는 INNER JOIN을 통해 Table_A와 결합됩니다. 이때 ON은 WHERE와 유사하게 두 테이블에서 특정 열이 일치하는지를 조건으로 설정하여 원하는 데이터를 선택하게 합니다.
2. INNER JOIN: 일치하는 데이터만 가져오기
INNER JOIN은 양쪽 테이블에서 조건을 만족하는 데이터만 가져오는 JOIN입니다. 다시 말해, Table_A와 Table_B에 공통적으로 존재하는 id값만 포함된 결과를 얻습니다. 만약 Table_B에 Table_A에 없는 값이 있거나, 반대로 Table_A에 Table_B에 없는 값이 있다면 그 데이터는 결과에서 제외됩니다.
예제:sql코드 복사SELECT * FROM Table_A INNER JOIN Table_B ON Table_A.id = Table_B.orderid;- 위 쿼리는 Table_A와 Table_B에서 id 값이 일치하는 데이터만 결합하여 보여줍니다.
- INNER JOIN을 통해 두 테이블에서 서로 일치하는 행만을 가져올 수 있기 때문에 중복 데이터를 줄이고 일관된 데이터를 확인할 수 있습니다.
3. LEFT JOIN: 일치하지 않는 데이터도 포함하기
LEFT JOIN은 기본 테이블인 Table_A의 모든 데이터와, Table_B에서 조건에 맞는 데이터를 결합합니다. 이때 Table_B에 일치하는 데이터가 없으면 NULL 값이 채워집니다. 즉, LEFT JOIN은 기본 테이블에 있는 모든 행을 포함하며, 필요한 경우 오른쪽 테이블에서 해당하는 데이터를 가져와 옆에 붙입니다.
예제:sql코드 복사SELECT * FROM Table_A LEFT JOIN Table_B ON Table_A.id = Table_B.orderid;- 위 쿼리는 Table_A의 모든 행을 포함합니다. 그리고 Table_B에서 orderid가 일치하는 데이터가 있다면 이를 결합하고, 일치하는 데이터가 없으면 NULL 값으로 표시됩니다.
- LEFT JOIN은 INNER JOIN과 달리, 오른쪽 테이블에 일치하는 값이 없더라도 기본 테이블의 모든 데이터를 유지한다는 점이 다릅니다.
4. RIGHT JOIN: 오른쪽 테이블 기준의 결합
RIGHT JOIN은 LEFT JOIN과 반대로 오른쪽 테이블의 모든 데이터를 포함하며, 왼쪽 테이블에서 조건에 맞는 데이터를 결합합니다. Table_B의 모든 데이터를 가져오고, Table_A에 해당하는 값이 있다면 이를 결합하고, 없으면 NULL로 채워집니다.
sql코드 복사SELECT * FROM Table_A RIGHT JOIN Table_B ON Table_A.id = Table_B.orderid;- 이 쿼리는 Table_B의 모든 행을 포함하며, Table_A의 데이터는 조건에 일치하는 경우에만 포함됩니다.
- 만약 Table_A에 데이터가 없더라도 Table_B의 모든 행이 결과에 표시됩니다.
5. JOIN에서 ON과 WHERE의 차이
JOIN의 조건을 설정할 때 ON 키워드를 사용해 두 테이블 간의 조건을 지정합니다. ON 절은 WHERE처럼 작동하지만 JOIN을 설정할 때 조인 조건을 명시적으로 나타내는 데 사용합니다. JOIN에서 ON은 테이블을 결합하기 위한 조건을 설정하고, 추가적인 필터링 조건이 필요할 경우 WHERE 절을 사용할 수 있습니다.
예제:sql코드 복사SELECT * FROM Table_A LEFT JOIN Table_B ON Table_A.id = Table_B.orderid WHERE Table_A.status = 'Active';위 쿼리에서 ON은 JOIN 조건을 설정하고, WHERE 절은 필터링 조건을 추가해 특정 값만 결과에 포함시킵니다.
마무리
JOIN은 SQL의 가장 기초적이고 중요한 기능 중 하나로, 여러 테이블 간의 관계를 설정하고 필요한 데이터를 효율적으로 추출할 수 있습니다. INNER JOIN, LEFT JOIN, RIGHT JOIN 등 각 JOIN 유형은 테이블 간의 결합 방식에 따라 다르게 동작하므로, 데이터의 필요성에 맞는 JOIN 유형을 선택하여 사용하면 됩니다.
'SQL' 카테고리의 다른 글
SQL - 표의 합 - UNION (1) 2024.11.14 SQL - self join (2) 2024.11.14 SQL - INNER JOIN: 두 개이상의 Table를 결합하는 기능 - (0) 2024.11.13 SQL의 CASE 심화 (1) 2024.11.12 SQL의 CASE사용법 (1) 2024.11.11