[오라클 SQL] 오라클 WITH 구문 사용 방법 및 예제
- Database(데이터베이스)/Oracle
- 2019. 7. 25. 01:00
안녕하세요~~
오늘은 오라클 WITH 구문을 사용하는 방법에 대해서 알려드리고자 합니다!
먼저 오라클에서 WITH 구문에 대해서 간략히 설명을 드릴게요
WITH 구문 이란?
- WITH 구문은 쿼리의 결과가 여러 번 반복해서 사용될 때 유용합니다.
- 각 쿼리 Block의 이름을 지정할 수 있습니다.
- 오라클 옵티마이저는 WITH 구문으로 선언한 쿼리를 임시 테이블로 봅니다.
WITH 구문 선언 방법
WITH ALIAS AS (쿼리)
SELECT 컬럼1, 컬럼2… FROM ALIAS 명
STUDENT Table
단일 WITH 구문 SQL
1 2 3 4 5 6 7 8 9 |
WITH STU_TMP AS ( SELECT CLASS, NAME, AGE FROM WIN.STUDENT )
SELECT * FROM WIN.STU_TMP |
실행 결과
위에서 임시테이블로 STU_TMP라고 만들어서 기존의 STUDENT 테이블에서 CLASS, NAME, AGE 컬럼만 뽑는 서브쿼리를 만들고 최종적으로 해당 STU_TMP 테이블을 조회를 해보니 CLASS, NAME, AGE 세 개의 컬럼들만 조회된 것을 확인 하실 수 있습니다!
다음으로는 다중 WITH 구문을 사용하는 방법을 보여드릴게요!
다중 WITH 구문 SQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
WITH STU_TMP AS ( SELECT CLASS, NAME, AGE FROM WIN.STUDENT ), STU_SCORE AS ( SELECT NAME, SCORE FROM WIN.STUDENT ), STU_GRADE AS ( SELECT NAME, GRADE FROM WIN.STUDENT )
SELECT tmp.CLASS, tmp.NAME, tmp.AGE , score.SCORE, grade.GRADE FROM WIN.STU_TMP tmp INNER JOIN WIN.STU_SCORE score ON tmp.NAME = score.NAME INNER JOIN WIN.STU_GRADE grade ON score.NAME = grade.NAME |
실행 결과
위와 같이 다중 WITH 구문을 사용하여 STUDENT 테이블의 데이터를 조회해 보았습니다!
글 읽어 주셔서 감사합니다ㅎㅎ
'Database(데이터베이스) > Oracle' 카테고리의 다른 글
[오라클 SQL] UNION, UNION ALL 차이 (0) | 2019.08.03 |
---|---|
[오라클 SQL] 다중 Table INSERT 하는 방법 (0) | 2019.07.26 |
[오라클 SQL] Between 문법 사용 예제 (0) | 2019.07.24 |
[오라클 SQL] LISTAGG 함수를 이용하여 여러행을 단일 컬럼으로 가져오기 (0) | 2019.07.23 |
[오라클 SQL] Table 조인(Join) 설명 (0) | 2019.07.19 |
이 글을 공유하기