*샘플데이터
-- 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]
왼쪽 테이블의 모든 데이터를 반환하고, 오른쪽 테이블에서 일치하는 데이터를 가져온다.
왼쪽 테이블에만 존재하고 오른쪽 테이블에 일치하는 데이터가 없으면 NULL이 반환된다.

왼쪽테이블인 employees는 다 반환하는데 Eve만 departments랑 엮이는 게 없어서 null로 뜬다.
오른쪽 테이블의 모든 데이터를 반환하고,왼쪽 테이블에서 일치하는 데이터를 가져온다.
오른쪽 테이블에만 존재하고 왼쪽 테이블에 일치하는 데이터가 없으면 NULL이 반환된다.

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

employees와 departments에서 dept_id가 일치하는 데이터만 반환함.
FULL OUTER JOIN은 양쪽 테이블의 모든 데이터를 반환하고, 조건에 맞지 않으면 NULL로 채워진다.

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