개발/Oracle

[Oracle] 오라클 WITH 절 사용법 임시테이블

TaeDy.I.T. 2023. 1. 27. 06:05
반응형

안녕하세요. 오늘은 오라클(Oracle) WITH절에 대해서 알아보겠습니다.

 

@ WITH 절 정의

- 오라클(Oracle)9 이후 버전부터 사용 가능합니다.

- 정의 해놓은 서브 쿼리라고 생각하시면 됩니다.

- 임시테이블을 만든다고 생각하시면 됩니다.

- VIEW라는 다르게 VIEW는 생성하면 DROP 할 때까지 없어지지 않고 다른 쿼리에서 재사용이 가능하지만 WITH는 해당 쿼리에서만 사용이 가능합니다.

 - 반복되는 서브 쿼리를 한번만 정의해서 가독성을 높입니다.

 

@ WITH 절 사용법

 

WITH tempTable AS

(

SELECT '컬럼1' AS a

, '컬럼2' AS b

FROM DUAL

)

SELECT * FROM tempTable;

 

제일 기본적으로 사용하는 방법입니다.

tempTable 라는 가상의 테이블을 만들었다고 보시면 됩니다.

tempTable 이라는 가상테이블과 다른 테이블과 조인해서도 사용 가능합니다.

 

@ 다중 WITH 절 사용법

WITH tempTable1 AS

(

SELECT 1 AS a

, 2 AS b

FROM DUAL

UNION ALL

SELECT 3 AS a

, 4 AS b

FROM DUAL

),

tempTable2 AS

(

SELECT 1 AS a

, 3 AS b

FROM DUAL

UNION ALL

SELECT 2 AS a

, 4 AS b

FROM DUAL

UNION ALL

SELECT * FROM tempTable1

)

SELECT * FROM tempTable2 t2;

 

WITH 절에 여러개 쓰는것도 가능하고 쉼표(,)로 선언하면 된다.

WITH 절안에서 다른 WITH 절도 참조가 가능하다.

 

 

WITH tempTable1 AS

(

SELECT 1 AS a

, 2 AS b

FROM DUAL

UNION ALL

SELECT 3

, 4

FROM DUAL

),

tempTable2 AS

(

SELECT 1 AS a

, 3 AS b

FROM DUAL

UNION ALL

SELECT 2

, 4

FROM DUAL

)

SELECT t1.a AS t1_a

, t1.b AS t1_b

, t2.a AS t2_a

, t2.b AS t2_b

FROM tempTable1 t1, tempTable2 t2

WHERE t1.a = t2.a;

 

위의 예제 처럼 WITH 절 끼리 JOIN도 가능하다.

 

이상 오라클(Oracle) WITH절에 대해서 알아보았습니다.

 

반응형