데이터베이스/Oracle

Oracle, Join이란 ?

greenyellow-s 2024. 8. 19. 18:56
Join

 

종류

Join 특징
Inner join 같은 것 끼리만 연결
Outer join 한쪽을 기준(모두 포함)해서 연결(left join, right join)
full join 왼쪽, 오른쪽 모두 포함
self join 자기 자신 테이블과 연결
cross join 모든 경우의 수로 연결
non equijoin 범위에 속하는지 여부를 확인
n개 테이블 조인 여러 개의 테이블 조인

 


Inner join : 같은 것 끼리만 연결

 

오라클 전용구문
select 테이블1.컬럼1, 테이블2.컬럼2 from 테이블1테이블2 where 테이블1.일치컬럼 테이블2.일치컬럼
select a.컬럼1, b.컬럼2 from 테이블1 a, 테이블2 b where a.일치컬럼 = b.일치컬럼


Ansi표준
select 컬럼1, 컬럼2 from 테이블1 join 테이블2 using(일치컬럼)

 

outer join : 한쪽을 기준(모두 포함)해서 연결(left join, right join)

 

right join

 

오라클 전용구문
select 테이블1.컬럼1, 테이블2.컬럼2 from 테이블1테이블2 where 테이블1.일치컬럼(+) 테이블2.일치컬럼
select a.컬럼1, b.컬럼2 from 테이블1 a, 테이블2 b where a.일치컬럼(+) = b.일치컬럼


Ansi표준
select 컬럼1, 컬럼2 from 테이블1 right join 테이블2 using(일치컬럼)



left join

 

오라클 전용구문
select 테이블1.컬럼1, 테이블2.컬럼2 from 테이블1테이블2 where 테이블1.일치컬럼 테이블2.일치컬럼(+)
select a.컬럼1, b.컬럼2 from 테이블1 a, 테이블2 b where a.일치컬럼 = b.일치컬럼(+)


Ansi표준
select 컬럼1, 컬럼2 from 테이블1 left join 테이블2 using(일치컬럼)

 

full join

 

오라클 전용 구문은 없다.


Ansi표준
select 컬럼1, 컬럼2 from 테이블1 full join 테이블2 using(일치컬럼)

 

self join : 자기 자신 테이블과 연결

 

cross join : 모든 행에 대해 가능한 모든 조합을 생성하는 조인

 

오라클 전용구문

select * from countries, locations;

 

Ansi표준
select * from countries cross join locations;

 

 

Non Equijoin : 컬럼값이 같은 경우가 아닌 범위에 속하는지 여부를 확인 할 때

 

on( 컬럼명 between 컬럼명1 and 컬럼명2)

 

ex)

salgrade 테이블

SALVEL LOWST HIGHST
A 20000 29999
B 10000 19999
C 0 9999


select last_name, salary, salvel

from employees join salgrade

         on(salary between lowst and heighst)

         order by salary desc;

 

on(salary between lowst and heighst)
=> salary 컬럼의 값이 lowst 컬럼과 heighst 컬럼 사이에 속해있는 값을 찾는다.

 

예를 들어,

salary = 15000 일 때, SALVEL = B이다.

왜냐하면 salary의 값이  10000( Lowst ) ~19999 ( Highst ) 사이에 있기 때문이다.

 

테이블 복사

 

create table 테이블 as select * from 원본테이블