안녕하세요. 오늘은 오라클(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절에 대해서 알아보았습니다.
'개발 > Oracle' 카테고리의 다른 글
[Oracle] 오라클 case when 설명 사용법 예제 if else (70) | 2023.02.03 |
---|---|
오라클(Oracle)과 PostgreSQL의 차이점 (22) | 2023.01.30 |
[Oracle] 오라클 문자열 합치기(CONCAT, ||) (23) | 2023.01.20 |
[Oracle] SUBSTR 문자열 자르기 사용법 (18) | 2023.01.19 |
[Oracle] DECODE 사용법 (if else) 디코드 (9) | 2023.01.17 |