본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

19강 SQL이 뭐지? PostgreSQL FULL OUTER JOIN

by DoitSQL 2022. 12. 19.
728x90

postgresql 기초강의강좌,  FULL OUTER JOIN

19강 SQL이 뭐지? PostgreSQL FULL OUTER JOIN   

 

PostgreSQL

SQL이 뭐지? 19강 시작합니다.

 

이번 강의에서는

 PostgreSQL FULL OUTER JOIN

에 대해서 알아보겠습니다.


Introduction to the PostgreSQL FULL OUTER JOIN   

두 테이블의 full outer join을 수행한다고 가정합니다. AB 다음은 FULL OUTER JOIN의 구문을 보여줍니다.

SELECT * FROM A
FULL [OUTER] JOIN B on A.id = B.id
;   

이 구문에서 OUTER 키워드는 선택 사항입니다.

 

FULL OUTER JOIN은 LEFT JOIN과 RIGHT JOIN의 결과를 모두 결합합니다.

 

조인된 테이블의 행이 일치하지 않으면 FULL OUTER JOIN은 일치하는 행이 없는 테이블의 모든 열에 대해 NULL 값을 설정합니다.

 

한 테이블의 행이 다른 테이블의 행과 일치하는 경우 결과 행에는 두 테이블의 행 열에서 채워진 열이 포함됩니다.

 

다음 Venn 다이어그램은 RIGHT JOIN의 작동 방식을 보여줍니다.    

조인

결과에는 두 테이블의 일치하는 행과 일치하지 않는 행이 포함됩니다.


PostgreSQL FULL OUTER JOIN example   

 

먼저 실습에 사용할 두 개의 새 테이블(employees  departments)을 만듭니다.   

DROP TABLE IF EXISTS departments;
DROP TABLE IF EXISTS employees;

CREATE TABLE departments (
 department_id serial PRIMARY KEY,
 department_name VARCHAR (255) NOT NULL
);

CREATE TABLE employees (
 employee_id serial PRIMARY KEY,
 employee_name VARCHAR (255),
 department_id INTEGER
);
commit;   

각 부서에는 0명 또는 많은 직원이 있으며 각 직원은 0명 또는 한 부서에 속합니다.

 

둘째, 일부 표본 데이터를 부서 및 직원 테이블에 insert합니다.   

INSERT INTO departments (department_name)
VALUES
 ('Sales'),
 ('Marketing'),
 ('HR'),
 ('IT'),
 ('Production');

INSERT INTO employees (
 employee_name,
 department_id
)
VALUES
 ('Bette Nicholson', 1),
 ('Christian Gable', 1),
 ('Joe Swank', 2),
 ('Fred Costner', 3),
 ('Sandra Kilmer', 4),
 ('Julia Mcqueen', NULL);
commit;   

 

셋째, 부서 및 직원 테이블에서 데이터를 쿼리합니다.   

SELECT * FROM departments;   

 

SELECT * FROM employees;   

 

넷째, FULL OUTER JOIN을 사용하여 직원 및 부서 테이블 모두에서 데이터를 쿼리합니다.   

SELECT
employee_name,
department_name
FROM
employees e
FULL OUTER JOIN departments d 
        ON d.department_id = e.department_id;   

결과 집합에는 부서에 속한 모든 직원과 직원이 있는 모든 부서가 포함됩니다. 또한 부서에 속하지 않는 모든 직원과 직원이 없는 모든 부서가 포함됩니다.

 

직원이 없는 부서를 찾으려면 다음과 같이 WHERE 절을 사용합니다.   

SELECT
   employee_name,
   department_name
FROM
   employees e
FULL OUTER JOIN departments d 
        ON d.department_id = e.department_id
WHERE
   employee_name IS NULL;   

결과는 생산 부서에 직원이 없다는 것을 보여줍니다.

 

어느 부서에도 속하지 않는 직원을 찾으려면 다음과 같이 WHERE 절을 사용합니다.   

SELECT
 employee_name,
 department_name
FROM
 employees e
FULL OUTER JOIN departments d ON d.department_id = e.department_id
WHERE
 department_name IS NULL;   

출력에서 분명히 알 수 있듯이 줄라 맥퀸은 어떤 부서에도 속하지 않습니다.


지금까지 둘 이상의 테이블에서 매칭이 안되는 행까지 찾아주는

PostgreSQL FULL OUTER JOIN절을 사용하는 방법에 대해 배웠습니다. 

 

감사합니다.


본 강의는 PostgreSQL Tutorial을 참조합니다. 

 

PostgreSQL Tutorial - Learn PostgreSQL from Scratch

Welcome to the PostgreSQLTutorial.com website! This PostgreSQL tutorial helps you understand PostgreSQL quickly. You’ll master PostgreSQL very fast through many practical examples and apply the knowledge in developing applications using PostgreSQL. If yo

www.postgresqltutorial.com

실습용 테이블에 대해서는 3강을 참조하세요.

 

3강 SQL이 뭐지? 도구들을 설치해보자. ( PostgreSQL, HeidiSQL )

지난 시간까지 SQL이 뭔지 대충 감을 잡는 시간을 가졌습니다. 이번 시간에는 본격적인 SQL을 공부하기 위해서 도구들을 설치해 보겠습니다. 1. PostgreSQL 설치 ( Windows10 64bit 기준) 2. He


Do it! SQL을 찾아 주셔서 감사합니다. 여러분의 댓글이 큰 힘이 됩니다.

 

728x90

댓글