[Oracle] WITH 절

yedi·2024년 7월 15일
post-thumbnail

WITH 절

| 개념

  • Oracle의 WITH절은 Oracle 9 버전부터 도입된 기능

  • Oracle에서는 WITH문을 이용해서 임시 테이블을 생성하고 사용할 수 있다.

  • VIEW 테이블과도 유사한데 아래와 같은 차이점이 있다.

    종류 공통점 차이점
    VIEW 임시 테이블 한번 만들면 DROP 할 때까지 없어지지 않음
    WITH 절 실행할 쿼리문 내에 정의되어 있을 경우, 그 쿼리문 안에서만 실행 가능
  • 서브쿼리를 WITH 절로 만들어서 테이블을 사용하듯 사용 가능 -> 성능 향상


| 종류

1. 단일 WITH 가상테이블
하나의 가상테이블을 만들고 싶은 경우, 아래와 같습니다.

WITH 임시테이블명 AS (
	-- 쿼리
)
-- 메인 쿼리

TABLE1이라는 가상의 테이블(쿼리 블록)을 WITH절로 만든다.
그리고 이 가상의 테이블 TABLE1에서 필요한 값을 조회한다.

-- 예시
WITH TABLE1 AS(
	SELECT '과일' AS COLUMN1
	FROM DUAL
)
SELECT * FROM TABLE1;


2. 다중 WITH 가상테이블
임시 테이블을 여러개 사용하고 싶은 경우, 쉼표(,)를 이용한다.

WITH 임시테이블1 AS (
	-- 쿼리
),
임시테이블2 AS (
	--  쿼리
),

--  메인 쿼리
-- 예시
WITH TABLE1 AS(
	SELECT '고양이' AS NAME FROM DUAL
	UNION ALL
	SELECT '강아지' AS NAME FROM DUAL
),
TABLE2 AS(
	SELECT '고양이' AS NAME FROM DUAL
	UNION ALL
	SELECT '고슴도치' AS NAME FROM DUAL
)
SELECT * FROM TABLE1 A
INNER JOIN TABLE2 B ON A.NAME = B.NAME



| 참고

https://sagittariusof85s.tistory.com/m/349
https://grandma-coding.tistory.com/entry/OracleWITH%EC%A0%88

0개의 댓글