사용 이유?
- 여러 테이블에 저장된 데이터를 한 번에 조회해야 할 때
※ 사용 빈도 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가 된다.

※ 표준 구문
SELECT hobby.*, actor.작품명 FROM hobby LEFT OUTER JOIN actor ON actor.이름 = hobby.이름;

▶ SELF JOIN
- 자신의 테이블 내에서 data를 매칭하는 경우
이상윤님의 희망취미는 다리찢기이고, 해당 취미를 가진 사람은 김태리님이다.
이처럼 자신 테이블 내에서 data를 참고하는 경우 사용

※ 표준 구문
SELECT 별칭1.*, 별칭2.이름 파트너
---> 별칭1.* : 별칭1의 모든 테이블 출력,
---> 별칭2.이름 : 별칭2.이름 칼럼만 출력
---> '파트너'는 신규테이블의 칼럼명, 없으면 '이름2'로 자동 지정됨
FROM partner 별칭1 LEFT OUTER JOIN partner 별칭2
---> '파트너' 테이블이 '파트너' 테이블과 조인? 같은이름이라 문법적 오류가 발생하기때문에 별칭을 넣어줘야 한다.
별칭1의 partner는 '이름~희망취미'인 기존 테이블이고,
별칭2의 partner는 자신의 data를 참조해서 조합할 테이블이다.
ON 별칭2.취미 = 별칭1.희망취미;
---> 서로 연결하는 칼럼

▶ ORACLE EQUI JOIN
- 오라클에서 사용하는 조인구문
- INNER JOIN과 같은 기능
※ 오라클 구문
SELECT actor.이름, 작품명, 취미 FROM actor, hobby WHERE actor.이름 = hobby.이름;

▶ ORACLE NON-EQUI
- 참조할 칼럼이 없는 테이블끼리 합치는 것
- A 테이블에서 가진 칼럼 값이 B 테이블의 칼럼1, 칼럼2 범위 안에 있을 때, WHERE 절에 비교연산자를 사용

'DBMS > Oracle' 카테고리의 다른 글
오라클 대체변수를 입력하세요 (0) | 2022.01.26 |
---|