관리 메뉴

콩부방

[Oracle]JOIN, ANSI JOIN 본문

DataBase/Oracle

[Oracle]JOIN, ANSI JOIN

콩이아부지이 2021. 8. 16. 23:09
728x90

JOIN의 개념과 기본사용 형식

JOIN은 2개이상의 테이블에서 데이터를 검색하기 위해서 사용한다.(보통 SELECT문과 자주 사용)

JOIN의 종류

1.INNER JOIN

2.SELF JOIN

3.LEFT OUTER JOIN

4.RIGHT OUTER JOIN

5.FULL OUTER JOIN

6.CROSS JOIN (ANSI JOIN)

 

Oracle에서의 JOIN과 ANSI 표준 JOIN 의 표기법은 다르지만 결과는 같다.

 

1.INNER JOIN

INNER JOIN은 조건을 만족하는 데이터만 가져온다.

두 테이블 모두 해당하는 값이 존재하는 경우에만 데이터가 조회된다.(존재하지 않는 값은 조회 되지 않음)

 

오라클에서의 기본 형식 

SELECT 컬럼명1,컬럼명2... FROM 테이블1 a, 테이블2 b WHERE a.조건컬럼명 = b.조건컬럼명 ...

ANSI 표준형식

SELECT 컬럼명1,컬럼명2... FROM 테이블1 a INNER JOIN 테이블2 b ON 조건

ON절에서는 WHERE조건에서 쓰는 모든 조건들을 사용할 수 있다.

 

2.SELF JOIN

같은 테이블을 JOIN 하는 것을 말하며 찾으려는 값이 한 테이블 내에 있을때 사용한다.

 

오라클에서의 기본 형식

SELECT * FROM 테이블1 a, 테이블1 b WHERE A.컬럼명1 = B.컬럼명2

ANSI 표준형식

SELECT 컬럼명1,컬럼명2... FROM 테이블1 a JOIN 테이블2 b ON a.컬럼명 = b.다른컬럼명

 

3.LEFT OUTER JOIN

INNER JOIN을 사용할땐 존재하지 않는 값은 조회가 되지 않는데 값이 존재하지 않더라도 

기준이 되는 테이블(LEFT)은 전부 표시하고 다른 테이블에 존재하지 않는 값은 NULL로 표시

 

오라클에서의 기본 형식 (+) 표시로 나타낸다

SELECT * FROM 테이블1 a, 테이블1 b WHERE A.컬럼명1(+) = B.컬럼명2

ANSI 표준형식

SELECT 컬럼명1,컬럼명2... FROM 테이블1 a LEFT OUTER JOIN 테이블2 b ON a.컬럼명 = b.컬럼명

 

4.RIGHT OUTER JOIN

LEFT OUTER JOIN과 마찬가지이며 기준이되는 테이블은 RIGHT 테이블이다

오라클에서의 기본 형식 (+) 표시로 나타낸다

SELECT * FROM 테이블1 a, 테이블1 b WHERE A.컬럼명1 = B.컬럼명2(+)

ANSI 표준형식

SELECT 컬럼명1,컬럼명2... FROM 테이블1 a RIGHT OUTER JOIN 테이블2 b ON a.컬럼명 = b.컬럼명

 

5.FULL OUTER JOIN

LEFT,RIGHT 조인을 합해서 조회한거라고 생각하면 된다.

 

ANSI 표준형식

SELECT 컬럼명1,컬럼명2... FROM 테이블1 a FULL OUTER JOIN 테이블 2 b ON a.컬럼명 = b.컬럼명

 

6.CROSS JOIN

CROSS JOIN에서 표시되는 행의 개수는 테이블1 x 테이블2 라고 생각하면 된다. 

ANSI 표준형식

SELECT 컬럼명1,컬럼명2... FROM 테이블1 a CROSS JOIN 테이블 2 b 

 

 

 

샘플 테이블1 DEPT01
샘플 테이블2 DEPT02

 

 

 

JOIN 사용연습

 

위 두개의 샘플 데이터를 가지고 연습을 해보겠다.

 

 

INNER 조인을 했을때

 - 두 테이블에서 서로 일치하는 행만 조회됨

 

LEFT OUTER JOIN을 했을때

-왼쪽 테이블(d1)이 기준이 되어 전부 출력 되고 오른쪽 테이블(d2)에 일치하지 않는 행들은 NULL값으로 조회됨

 

 

 

RIGHT OUTER JOIN을 했을때

-위와 반대로 오른쪽 테이블이 기준이되어 전부 출력되고

왼쪽 테이블에 조건이 일치하지 않는 행들은 NULL값 조회됨

 

 

 

FULL OUTER JOIN을 했을때 

-LEFT,RIGHT 둘다 중복이 되어서 출력되고 조건을 만족 못하는 행들은 NULL값 조회됨

 

 

 

CROSS JOIN을 했을때

-행이 3개의테이블d1 행이 3개의 테이블d2 곱해서 총 9개의 행이 조회됨

(JOIN문에 조건을 주지않고 실행했을때 같은결과)

 

 

 

728x90

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

[Oracle]GROUP BY,HAVING  (0) 2021.08.14
[Oracle]DROP  (0) 2021.08.13
[Oracle]ALTER  (0) 2021.08.13
[Oracle]CREATE  (0) 2021.08.13
[Oracle]DELETE  (0) 2021.08.11
Comments