[SQLP]오라클 조인(LEFT JOIN,RIGHT JOIN,INNER JOIN,CROSS JOIN,FULL OUTER JOIN)

·2025년 1월 7일

SQLP

목록 보기
6/20
post-thumbnail

*샘플데이터
-- Departments 테이블 생성
DROP TABLE departments;
CREATE TABLE departments (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(100)
);
-- Employees 데이터 삽입
INSERT INTO employees (emp_id, emp_name, dept_id) VALUES (1, 'John', 1);
INSERT INTO employees (emp_id, emp_name, dept_id) VALUES (2, 'Alice', 2);
INSERT INTO employees (emp_id, emp_name, dept_id) VALUES (3, 'Bob', 1);
INSERT INTO employees (emp_id, emp_name, dept_id) VALUES (6, 'Eve', NULL);
-- Departments 데이터 삽입
INSERT INTO departments (dept_id, dept_name) VALUES (1, 'HR');
INSERT INTO departments (dept_id, dept_name) VALUES (2, 'IT');
INSERT INTO departments (dept_id, dept_name) VALUES (3, 'Marketing');
[employees table]

[departments table]

😺LEFT JOIN(=LEFT OUTER JOIN)

왼쪽 테이블의 모든 데이터를 반환하고, 오른쪽 테이블에서 일치하는 데이터를 가져온다.
왼쪽 테이블에만 존재하고 오른쪽 테이블에 일치하는 데이터가 없으면 NULL이 반환된다.

왼쪽테이블인 employees는 다 반환하는데 Eve만 departments랑 엮이는 게 없어서 null로 뜬다.

😺RIGHT JOIN(=RIGHT OUTER JOIN)

오른쪽 테이블의 모든 데이터를 반환하고,왼쪽 테이블에서 일치하는 데이터를 가져온다.
오른쪽 테이블에만 존재하고 왼쪽 테이블에 일치하는 데이터가 없으면 NULL이 반환된다.

오른쪽테이블인 departments의 데이터는 다 나오는데 Marketing의 경우에는 왼쪽테이블이랑 dept_id가 겹치는 게 없어서 null로 반환된다.

😺INNER JOIN

INNER JOIN은 두 테이블에서 일치하는 데이터만 반환한다.

employees와 departments에서 dept_id가 일치하는 데이터만 반환함.

😺FULL OUTER JOIN(LEFT JOIN + RIGHT JOIN)

FULL OUTER JOIN은 양쪽 테이블의 모든 데이터를 반환하고, 조건에 맞지 않으면 NULL로 채워진다.

😺CROSS JOIN(교차 조인)

CROSS JOIN은 조건 없이 두 테이블의 모든 조합을 반환. 즉, 카르테시안 곱을 수행함(A 테이블의 행 수 B 테이블의 행 수)
employees의 행수(4)
departments의 행수(3) = 12행이 나온다.

profile
냐홍

0개의 댓글