Oracle/SQL2021. 6. 17. 11:32

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
Posted by 자수성가한 부자