join이란?
읽고자 하는 데이터가 하나의 테이블이 아닌 두개 이상의 테이블에 나눠있다면 어떻게 해야할까?
그러면 두개의 테이블로부터 데이터를 읽어와야할 것이다
from emp
from dept
=>
from emp, dept
이것이 join이다.
join은 간단히 얘기해서 from 절에 두개 이상의 테이블이 오는 것이다.
예를 들어 emp 테이블에 아래와 같이 데이터가 저장되어있다고 하자.
emp_id emp_name dept_no
-------------------------------------
1 홍길동 10
2 세종대왕 10
3 유재석 20
그리고 dept 테이블에는 아래와 같이 데이터가 있다고 가정하자.
dept_no dept_name
---------------------------
10 경영관리실
20 기술지원실
아래의 결과는 어떻게 나올까?
select emp.*, dept.*
from emp, dept;
결과는 아래와 같다. 총 row의 수는 3*2 = 6개이다.
이것을 cartesian product (카티션 프로덕트)라고 한다.
emp_id emp_name dept_no dept_no dept_name
----------------------------------------------------------------
1 홍길동 10 10 경영관리실
1 홍길동 10 20 기술지원실
2 세종대왕 10 10 경영관리실
2 세종대왕 10 20 기술지원실
3 유재석 20 10 경영관리실
3 유재석 20 20 기술지원실
여기에 where 조건을 추가하게 되면
select emp.*, dept.*
from emp, dept
where emp.dept_no = dept.dept_no;
조건에 맞는 row들만 남게되는 것이다. 총 3건이 된다.
emp_id emp_name dept_no dept_no dept_name
----------------------------------------------------------------
1 홍길동 10 10 경영관리실
1 홍길동 10 20 기술지원실
2 세종대왕 10 10 경영관리실
2 세종대왕 10 20 기술지원실
3 유재석 20 10 경영관리실
3 유재석 20 20 기술지원실
이렇게 순차적으로 이해를 하면 join을 이해하기가 쉽다.
'Oracle > SQL' 카테고리의 다른 글
COALESCE 함수 (0) | 2022.10.24 |
---|---|
연산자 (0) | 2021.06.16 |
ORDER BY (0) | 2021.06.16 |
OPTIMIZER와 실행계획 (0) | 2021.06.15 |
WHERE (0) | 2021.06.15 |