SQL

데이터 분석을 위한 SQL LEFT JOIN으로 테이블을 쉽게 결합하는 방법

DSDiary 2023. 5. 5. 16:14
728x90
반응형
SMALL

 

안녕하세요! 오늘은 ~ LEFT JOIN이 무엇인지, 어떻게 작동하는지 설명하고 몇 가지 사용 예제까지 살펴보겠습니다.

 

 

 

SQL LEFT JOIN은 SQL에서 일반적으로 사용되는 JOIN 유형 중 하나입니다. 두 개 이상의 테이블 사이의 관련 열을 기반으로 행을 결합할 수 있습니다.

 

 

 

 

SQL LEFT JOIN 이해

 

SQL LEFT JOIN은 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 일치하는 레코드를 반환합니다. 오른쪽 테이블에 일치하는 레코드가 없으면 결과에 해당하는 열에 대해서는 NULL 값이 포함됩니다. LEFT JOIN 구문은 다음과 같습니다.

SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;
 

 

이 구문에서 table1 은 왼쪽 테이블, table2는 오른쪽 테이블, column 은 두 테이블을 연결하는 열입니다.

 

 

 

 

SQL LEFT JOIN은 어떻게 작동할까요?

 

LEFT JOIN이 실행되면 데이터베이스는 먼저 왼쪽 테이블에서 모든 레코드를 검색합니다. 그런 다음 JOIN 조건에 지정된 열을 기반으로 오른쪽 테이블에서 일치하는 레코드를 찾습니다. 일치하는 레코드가 있는 경우 데이터베이스는 오른쪽 테이블의 일치하는 레코드를 왼쪽 테이블의 해당 레코드와 결합합니다. 오른쪽 테이블에 일치하는 레코드가 없으면 데이터베이스는 오른쪽 테이블의 열에 대해 NULL 값을 반환합니다.

 

 

 

 

SQL LEFT JOIN 예제

 

LEFT JOIN을 사용하는 몇 가지 예를 살펴보겠습니다.

 

 

 

두 개의 테이블 employees와 departments가 있다고 가정해 봅시다. employees 테이블에는 직원에 대한 정보가 있고, departments 테이블에는 직원이 근무하는 부서에 대한 정보가 있습니다. 아직 어떤 부서에도 포함되지 않은 경우에도 모든 직원과 그들이 근무하는 부서를 검색하려고 합니다.

SELECT employees.name, departments.name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id;
 

 

이 예에서는 LEFT JOIN을 사용해서 각각 department_id 와 id 열을 사용하여 employees 와 departments 테이블을 연결했습니다. 결과에는 아직 어떤 부서에도 포함되지 않은 직원을 포함하여 모든 직원이 나타납니다. 해당 직원의 경우에는 departments.name 열의 값이 NULL이 됩니다.

 

 

 

 

SQL LEFT JOIN은 둘 이상의 테이블을 결합하는 데에도 사용할 수 있습니다. students, classess, enrollments라는 세 개의 테이블이 있는 예를 들어보겠습니다. students 테이블에는 학생에 대한 정보가 포함되고, classes 테이블에는 클래스에 대한 정보가 포함되고, enrollments 테이블에는 어떤 학생이 어떤 클래스에 등록되어 있는지 포함되어 있습니다.

SELECT students.name, classes.name, enrollments.grade
FROM students
LEFT JOIN enrollments
ON students.id = enrollments.student_id
LEFT JOIN classes
ON enrollments.class_id = classes.id;
 

 

이 예에서는 두 개의 LEFT JOIN을 사용하여 세 개의 테이블을 함께 연결했습니다. 먼저 id 및 student_id 열을 사용하여 students 및 enrollments 테이블을 연결합니다. 그런 다음 각각 class_id, id 열을 사용하여 enrollments와 classes 테이블을 연결합니다. 결과에는 아직 등록된 수업이 없더라도 모든 학생과 등록된 수업이 포함됩니다. 해당 학생의 경우 classes.name과 enrollments.grade 열의 값이 NULL로 표시됩니다.

 

 

 

 

SQL LEFT JOIN은 두 개 이상의 테이블 사이의 관련된 열을 기반으로 레코드를 결합할 수 있는 유용한 JOIN 유형입니다. 두 번째 테이블에 일치하는 레코드가 없더라도 한 테이블에서 모든 레코드를 검색하고 다른 테이블에서 일치하는 레코드를 검색해야 할 때 유용합니다.

 

 

 

 

 

728x90
반응형
LIST