SQL LEFT JOIN과 LEFT OUTER JOIN 비교
SQL은 관계형 데이터베이스와 상호 작용하는 강력한 도구입니다. SQL에서 테이블 작업을 할 때 여러 테이블의 데이터를 결합해야 하는 경우가 많습니다. JOIN 작업이 도움이 되는 곳입니다. LEFT JOIN 및 LEFT OUTER JOIN은 일반적으로 사용되는 두 가지 명령입니다. 서로 다르게 보이지만 실제로는 동일한 기능을 수행합니다. SQL LEFT JOIN과 LEFT OUTER JOIN의 작동 방식과 차이점을 이해해 보겠습니다.
LEFT JOIN이란 무엇입니까?
LEFT JOIN은 관련 열을 기반으로 두 테이블의 행을 결합하는 SQL JOIN 작업 유형입니다. LEFT JOIN의 주요 특징은 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환한다는 것입니다. 일치하는 항목이 없으면 오른쪽 테이블의 열에 대한 NULL 값이 결과에 포함됩니다.
통사론
SELECT columns
FROM left_table
LEFT JOIN right_table
ON left_table.column_name = right_table.column_name;
위 구문에서:
- 왼쪽_테이블: 모든 행이 반환되는 기본 테이블입니다.
- right_table: 일치하는 행이 반환되는 보조 테이블입니다.
- 컬럼_이름: 두 테이블을 조인하는 데 사용되는 열입니다.
LEFT JOIN의 예
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id;
이 쿼리는 모든 직원과 해당 부서 이름을 검색합니다. 직원이 어떤 부서에도 배정되지 않은 경우 부서 이름이 NULL로 표시됩니다.
또한 읽어 보세요: SQL의 조인 – 내부, 왼쪽, 오른쪽 및 전체 조인 설명
LEFT OUTER JOIN이란 무엇입니까?
LEFT OUTER JOIN은 LEFT JOIN과 동일하게 작동합니다. 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환합니다. 일치하는 항목이 없으면 오른쪽 테이블의 열에 대해 NULL을 반환합니다. “OUTER”라는 용어는 선택 사항이며 JOIN의 동작을 변경하지 않습니다. 일부 SQL 방언에서는 명확성을 위해 자주 사용됩니다.
통사론
SELECT columns
FROM left_table
LEFT OUTER JOIN right_table
ON left_table.column_name = right_table.column_name;
위와 동일한 예를 사용하여 다음과 같이 쿼리를 다시 작성할 수 있습니다.
보시다시피 구문은 LEFT JOIN과 동일합니다. 유일한 차이점은 OUTER라는 단어가 포함된다는 것입니다.
LEFT OUTER JOIN의 예
SELECT employees.name, departments.department_name
FROM employees
LEFT OUTER JOIN departments
ON employees.department_id = departments.id;
이 쿼리는 LEFT JOIN과 마찬가지로 모든 직원과 해당 부서 이름도 검색합니다. 직원이 어떤 부서에도 배정되지 않은 경우 부서 이름이 NULL로 표시됩니다.
추가 읽기: 기초부터 고급 수준까지의 SQL 가이드
SQL LEFT JOIN과 LEFT OUTER JOIN 비교
조건이 있는 동안 왼쪽 조인 그리고 왼쪽 외부 조인 다르게 나타날 수 있지만 SQL에서는 기능적으로 동일합니다. 유일한 차이점은 구문에 있습니다.
- 왼쪽 조인: 더 짧고 더 일반적으로 사용됩니다.
- 왼쪽 외부 조인: 선택사항을 포함합니다. “밖의” 명확성을 위한 키워드입니다.
두 명령 모두 동일한 결과를 반환하므로 둘 중 하나를 선택하는 것은 개인 또는 조직의 선호도에 달려 있습니다.
실제 예: LEFT JOIN 및 LEFT OUTER JOIN
직원 및 부서 테이블이 포함된 샘플 데이터베이스를 생성한 후 LEFT JOIN 및 RIGHT JOIN 예제를 사용하려면 다음 SQL 명령을 사용할 수 있습니다.
1단계: 데이터베이스 생성
먼저 테이블이 상주할 데이터베이스를 만듭니다.
CREATE DATABASE company_db;
USE company_db;
2단계: 테이블 생성
이제 직원 및 부서 테이블을 만들어 보겠습니다.
-- Create the 'departments' table
CREATE TABLE departments (
id INT PRIMARY KEY,
department_name VARCHAR(100) NOT NULL
);
-- Create the 'employees' table
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT,
FOREIGN KEY (department_id) REFERENCES departments(id)
);
3단계: 테이블에 데이터 삽입
이제 두 테이블 모두에 일부 샘플 데이터를 삽입합니다.
-- Insert data into 'departments' table
INSERT INTO departments (id, department_name) VALUES
(1, 'HR'),
(2, 'IT'),
(3, 'Finance'),
(4, 'Marketing');
산출:
-- Insert data into 'employees' table
INSERT INTO employees (id, name, department_id) VALUES
(1, 'Alice', 2),
(2, 'Bob', 3),
(3, 'Charlie', NULL),
(4, 'David', 1);
산출:

4단계: 쿼리 실행
이제 데이터베이스와 테이블이 생성되고 데이터가 채워졌으므로 LEFT JOIN 및 RIGHT JOIN 쿼리를 실행할 수 있습니다.
왼쪽 조인 쿼리
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id;
산출:

오른쪽 조인 쿼리
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.id;
산출:

LEFT JOIN 또는 LEFT OUTER JOIN을 사용하는 경우
- 데이터 검색: 오른쪽 테이블에 일치하는 레코드가 없더라도 왼쪽 테이블의 모든 레코드가 필요한 경우 LEFT JOIN을 사용합니다.
- 보고: 관계에 관계없이 모든 항목(예: 제품, 직원)을 포함하려는 보고서를 생성하는 데 적합합니다.
- 데이터 분석: 데이터 세트 간의 격차 또는 누락된 관계를 식별하는 데 도움이 됩니다.
결론
요약하면 LEFT JOIN과 LEFT OUTER JOIN은 모두 두 테이블의 데이터를 결합하는 동시에 왼쪽 테이블의 모든 레코드가 결과 집합에 포함되도록 하는 동일한 목적을 제공하는 SQL의 동의어입니다. 한 용어를 다른 용어보다 사용하는 것의 선택은 개인 또는 조직의 선호도에 따라 결정되는 경우가 많습니다. 이를 이해하면 SQL 쿼리 작성 시 효율성이 향상되고 데이터 조작 작업 중 혼란을 방지할 수 있습니다.
SQL 프로젝트를 통해 SQL 지식을 테스트해 보세요!
자주 묻는 질문
A. 차이는 없습니다. LEFT JOIN과 LEFT OUTER JOIN은 기능적으로 동일합니다. “OUTER”라는 용어는 선택 사항이며 명확성을 위해 사용됩니다.
A. 오른쪽 테이블에 일치하는 레코드가 없더라도 왼쪽 테이블의 모든 레코드가 필요한 경우 LEFT JOIN을 사용하십시오.
A. 예, LEFT JOIN은 왼쪽 테이블의 행과 일치하는 항목이 없을 때 오른쪽 테이블의 열에 대해 NULL 값을 반환합니다.
A. 예, SQL 쿼리에서 LEFT JOIN과 LEFT OUTER JOIN을 교대로 사용할 수 있습니다. 둘 다 동일한 결과를 생성합니다.
Post Comment