English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 SQL 왼쪽 조인을 사용하여 두 테이블에서 데이터를 검색하는 방법을 배웁니다.
LEFT JOIN 문은 왼쪽 테이블의 모든 행과 만족하는 조인 조건을 만족하는 오른쪽 테이블의 행을 반환합니다. 왼쪽 조인은외부 조인의 하나라고도 합니다left outer join외부 조인의 다른 변형은오른쪽 조인와완전 조인。
하위 비엔어트(venn) 그래프는 왼쪽 조인의 작동 방식을 설명합니다。
주의:외부 조인은 결과 집합에서 두 테이블의 행이 일치하지 않을 수 있는 경우에도 행을 포함하는 조인입니다。
이를 명확히 이해하기 위해 다음을 보여드리겠습니다employees와departments테이블。
+--------+--------------+------------+---------+ | emp_id | emp_name | hire_date | dept_id | +--------+--------------+------------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 4 | | 2 | Tony Montana | 2002-07-15 | 1 | | 3 | Sarah Connor | 2005-10-18 | 5 | | 4 | Rick Deckard | 2007-01-03 | 3 | | 5 | Martin Blank | 2008-06-24 | NULL | +--------+--------------+------------+---------+ | +---------+------------------+ | dept_id | dept_name | +---------+------------------+ | 1 | Administration | | 2 | Customer Service | | 3 | Finance | | 4 | Human Resources | | 5 | Sales | +---------+------------------+ | |
테이블: employees | 테이블: departments |
지금, 모든 직원의 ID, 이름 및 고용 날짜와 그들의 부서 이름을 검색하려고 할 때, 부서에 배정되어 있거나 없이도 이러한 유형의 결과 집합을 얻기 위해 왼쪽 조인을 적용해야 합니다.
다음 문장은 공통 필드를 사용하여직원(employees)와departments(부서) 테이블이 연결되어 직원의 ID, 이름, 고용 날짜 및 부서 이름을 검색합니다dept_id그것은 부서에 배정되지 않은 직원들도 포함하고 있습니다。
SELECT t1.emp_id, t1.emp_name, t1.hire_date, t2.dept_name FROM employees AS t1 LEFT JOIN departments AS t2 ON t1.dept_id = t2.dept_id ORDER BY emp_id;
ヒント:조인 쿼리에서 왼쪽 테이블은 JOIN 문에서 가장 왼쪽에 나타나는 테이블이며, 오른쪽 테이블은 가장 오른쪽에 나타나는 테이블입니다。
명령어를 실행하면 다음과 같은 출력을 얻습니다:
+--------+--------------+------------+-----------------+ | emp_id | emp_name | hire_date | dept_name | +--------+--------------+------------+-----------------+ | 1 | Ethan Hunt | 2001-05-01 | Human Resources | | 2 | Tony Montana | 2002-07-15 | Administration | | 3 | Sarah Connor | 2005-10-18 | Sales | | 4 | Rick Deckard | 2007-01-03 | Finance | | 5 | Martin Blank | 2008-06-24 | NULL | +--------+--------------+------------+-----------------+
그렇게 명확하게 볼 수 있듯이, 왼쪽 조인은 포함합니다.직원(employees) 테이블의 결과 집합에 모든 행이 포함되어 있습니다.departments테이블에 있는dept_id열이 일치하는지 확인하세요.
주의:왼쪽 테이블에 행이 있지만 오른쪽 테이블에 일치하는 항목이 없으면, 연결된 결과 행은 오른쪽 테이블의 모든 열의 NULL 값을 포함합니다.