SQL에서 LEFT JOIN은 두 테이블을 조인할 때 사용되는 강력한 기능입니다. 이 조인은 첫 번째(왼쪽) 테이블의 모든 행을 반환하고, 두 번째(오른쪽) 테이블의 일치하는 행이 없으면 NULL 값을 반환합니다. 이를 통해 두 테이블 간의 관계를 명확히 하고, 왼쪽 테이블에 항상 있는 데이터를 기반으로 오른쪽 테이블의 데이터를 결합할 수 있습니다. 이 글에서는 LEFT JOIN의 개념을 이해하기 위해 예제와 함께 자세히 설명합니다.
LEFT JOIN 기본 개념
LEFT JOIN은 다음과 같이 작동합니다:
- 왼쪽 테이블의 모든 행이 결과 집합에 포함됩니다.
- 오른쪽 테이블의 일치하는 행이 결과 집합에 포함됩니다.
- 오른쪽 테이블에 일치하는 행이 없으면 NULL로 표시됩니다.
기본 문법
SELECT A.*, B.*
FROM tableA A
LEFT JOIN tableB B ON A.common_column = B.common_column;
여기서 tableA는 왼쪽 테이블, tableB는 오른쪽 테이블입니다. ON 키워드는 두 테이블 간의 일치하는 열을 지정합니다.
예제: 학생과 수업
다음은 두 개의 테이블, students와 classes를 사용한 예제입니다. 각 학생이 수강하는 수업 정보를 결합합니다.
테이블 구조
students 테이블:
student_id | name |
1 | Alice |
2 | Bob |
3 | Charlie |
classes 테이블:
class_id | student_id | class_name |
1 | 1 | Math |
2 | 2 | Science |
3 | 1 | English |
LEFT JOIN 쿼리
모든 학생의 정보를 가져오고, 각 학생이 수강하는 수업 정보를 결합하려면 다음과 같이 LEFT JOIN을 사용할 수 있습니다.
SELECT students.student_id, students.name, classes.class_name
FROM students
LEFT JOIN classes ON students.student_id = classes.student_id;
결과
위 쿼리의 결과는 다음과 같습니다:
student_id | name | class_name |
1 | Alice | Math |
1 | Alice | English |
2 | Bob | Science |
3 | Charlie | NULL |
결과 해석
- Alice는 Math와 English 수업을 수강하므로 두 행이 반환됩니다.
- Bob은 Science 수업을 수강하므로 한 행이 반환됩니다.
- Charlie는 수강하는 수업이 없으므로 class_name 열에 NULL이 표시됩니다.
✅ 직접 쿼리 실행해보기
활용 예제
예제 1: 직원과 부서
employees 테이블과 departments 테이블이 있다고 가정합니다. 모든 직원의 정보를 가져오고, 각 직원이 속한 부서 정보를 결합합니다.
SELECT employees.employee_id, employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;
예제 2: 주문과 고객
orders 테이블과 customers 테이블이 있다고 가정합니다. 모든 주문의 정보를 가져오고, 각 주문을 한 고객의 정보를 결합합니다.
SELECT orders.order_id, customers.customer_name
FROM orders
LEFT JOIN customers ON orders.customer_id = customers.customer_id;
결론
LEFT JOIN은 데이터베이스 테이블 간의 관계를 이해하고 결합하는 데 강력한 도구입니다. 왼쪽 테이블의 모든 행을 유지하면서 오른쪽 테이블의 일치하는 데이터를 결합하여, 데이터의 불일치를 명확히 하고 필요한 정보를 종합할 수 있습니다. 다양한 상황에서 LEFT JOIN을 사용하여 효율적인 데이터 분석과 리포팅을 수행할 수 있습니다. 이 예제들을 통해 LEFT JOIN의 작동 방식을 이해하고 실제 데이터베이스 작업에 적용해 보세요.
'IT 개발' 카테고리의 다른 글
[Java] String을 int로, int에서 String으로 변환하기: 문자열 숫자 변환 (1) | 2024.07.10 |
---|---|
[Java]현재 날짜와 시간 구하기 (0) | 2024.07.10 |
[JavaScript] 자바스크립트 replaceAll 사용 방법(js 에서 replaceAll) (0) | 2024.07.03 |
CORS(Cross-Origin Resource Sharing)의 아주 쉬운 설명 (0) | 2024.06.22 |
[javascript] CORS 제한을 피하는 방법(Cross-Origin Resource Sharing 우회) (0) | 2024.06.22 |
댓글