HR sample schema 계정 예제파일

hr_250214_조인.sql

<aside>

Join이란?

Join은 데이터베이스에서 두 개 이상의 테이블을 연결하여 하나의 결과로 만드는 방법입니다. 각 테이블에 분리되어 있는 연관된 데이터를 필요할 때 하나로 합쳐서 볼 수 있게 해줍니다.

</aside>

1. 조인(Join) 문법 비교

Oracle 전통 문법

SELECT column1, column2
FROM table1, table2
WHERE table1.column = table2.column;

ANSI 표준 문법

SELECT column1, column2
FROM table1
JOIN table2 ON table1.column = table2.column;

2. CROSS JOIN - 카티션 곱(Cartesian Product)

두 테이블의 모든 행을 조합하는 조인 방식입니다. M행의 테이블과 N행의 테이블을 카티션 조인하면 M*N개의 행이 생성됩니다.

Oracle 문법

SELECT * FROM table1, table2;

ANSI 문법

SELECT * FROM table1 CROSS JOIN table2;

예제:

select count(*) from EMPLOYEES;--107
select count(*) from DEPARTMENTS;--27
--ORACLE
select count(*) from EMPLOYEES, DEPARTMENTS;--2889 = 107 * 27
--ANSI
select count(*) from EMPLOYEES CROSS JOIN DEPARTMENTS;

-- 예제 1: 부서와 직무의 모든 조합 확인
SELECT d.department_name, j.job_title
FROM departments d, jobs j;

-- 예제 2: 지역과 국가의 모든 조합
SELECT l.city, c.country_name
FROM locations l, countries c;

-- 예제 3: 직원과 부서의 모든 조합
SELECT e.first_name, d.department_name
FROM employees e, departments d;

-- 예제 4: 직무와 직무 이력의 모든 조합
SELECT j.job_title, jh.start_date
FROM jobs j, job_history jh;

-- 예제 5: 국가와 지역의 모든 조합
SELECT c.country_name, r.region_name
FROM countries c, regions r;