DBMS/Oracle

[오라클] JOIN(OUTER/INNER/SELF/EQUI/NON-EQUI)

멋쟁휘개발자 2022. 2. 22. 16:48

사용 이유?

- 여러 테이블에 저장된 데이터를 한 번에 조회해야 할 때

※ 사용 빈도 outter > inner

 

 

▶ INNER JOIN 이란?

- 서로 관계 있는 내용만 합치는 것(= 테이블을 합칠 수 있는 알맹이라고 보면 됨)

양쪽 테이블에서 이름을 참고해서 JOIN 하고자 했을 때,

Inner만 서로 연관되어 테이블 JOIN이 가능하다(Outer 버림)

actor테이블은 hobby 테이블의 행수만큼 복제되어 JOIN

※ 표준 구문

SELECT * FROM actor INNER JOIN hobby ON actor.이름 = hobby.이름;

INNER JOIN

 

▶ OUTER JOIN이란?

- Inner Join 내용에 Outter를 포함하여 합치는 것

• LEFT/RIGHT/FULL JOIN이란?

- 왼쪽/오른쪽/양쪽 테이블의 Outter 행을 포함하여 Join

- 참조될 수 없는 각각의 행은 NULL로 채워짐

LEFT 예시)

LEFT(=actor)에만 있는 행은 hobby의 경우, NULL로 채워짐

※ 표준 구문

SELECT actor.*, hobby.취미 FROM actor LEFT OUTER JOIN hobby ON actor.이름 = hobby.이름;

* LEFT의 왼쪽에 기입한 테이블명이 기준 LEFT가 된다.

LEFT OUTER JOIN

 

※ 표준 구문

SELECT hobby.*, actor.작품명 FROM hobby LEFT OUTER JOIN actor ON actor.이름 = hobby.이름;

LEFT OUTER JOIN

 


 

▶ SELF JOIN

- 자신의 테이블 내에서 data를 매칭하는 경우

이상윤님의 희망취미는 다리찢기이고, 해당 취미를 가진 사람은 김태리님이다.

이처럼 자신 테이블 내에서 data를 참고하는 경우 사용

SELF JOIN

 

※ 표준 구문

SELECT 별칭1.*, 별칭2.이름 파트너

---> 별칭1.* : 별칭1의 모든 테이블 출력,

---> 별칭2.이름 : 별칭2.이름 칼럼만 출력

---> '파트너'는 신규테이블의 칼럼명, 없으면 '이름2'로 자동 지정됨

FROM partner 별칭1 LEFT OUTER JOIN partner 별칭2

---> '파트너' 테이블이 '파트너' 테이블과 조인? 같은이름이라 문법적 오류가 발생하기때문에 별칭을 넣어줘야 한다.

별칭1의 partner는 '이름~희망취미'인 기존 테이블이고,

별칭2의 partner는 자신의 data를 참조해서 조합할 테이블이다.

ON 별칭2.취미 = 별칭1.희망취미;

---> 서로 연결하는 칼럼

SELF JOIN

 


▶ ORACLE EQUI JOIN

- 오라클에서 사용하는 조인구문

- INNER JOIN과 같은 기능

※ 오라클 구문

SELECT actor.이름, 작품명, 취미 FROM actor, hobby WHERE actor.이름 = hobby.이름;

ORACLE EQUI JOIN

 


▶ ORACLE NON-EQUI

- 참조할 칼럼이 없는 테이블끼리 합치는 것

- A 테이블에서 가진 칼럼 값이 B 테이블의 칼럼1, 칼럼2 범위 안에 있을 때, WHERE 절에 비교연산자를 사용

 

ORACLE NON-EQUI

 

 

'DBMS > Oracle' 카테고리의 다른 글

오라클 대체변수를 입력하세요  (0) 2022.01.26