개발일기
0317_ SQL UNION문 , WITH와 VIEW의 차이
포로리33
2023. 3. 22. 15:53
⦁ UNION, UNION ALL
두개의 SELECT문을 합쳐서 출력하고 싶을 때 사용한다.
UNION 은 중복을 출력하지 않지만
UNION ALL 은 중복도 출력한다.
아래 두 테이블을 예제로 하면,
A_TABLE | B_TABLE | |
NUM | 1,3,5,7,9 | 2,3,5,7 |
1) UNION
SELECT NUM FROM A_TABLE
UNION
SELECT NUM FROM B_TABLE
//결과 : 1,2,3,5,7,9
UNION 문의 출력값은 중복을 제거하고 자동 정렬을 한 뒤 출력한다.
1,3,5,7,9 + 2,3,5,7
1,3,5,7,9 + 2,3,5,7 (중복은 표시하지 않음)
1,2,3,5,7,9 (자동 정렬)
2) UNION ALL
SELECT NUM FROM A_TABLE
UNION ALL
SELECT NUM FROM B_TABLE
//결과 : 1,3,5,7,9,2,3,5,7
UNION ALL 문의 출력값은 중복을 표시하고 정렬없이 첫번째 SELECT문 뒤로 두번째 SELECT문을 붙이는 식으로 출력한다.
이때 ORDER BY절을 두번째 SELECT문에 붙여 정렬할 수 있다.
SELECT NUM FROM A_TABLE
UNION ALL
SELECT NUM FROM B_TABLE ORDER BY NUM
//결과 : 1,2,3,3,5,5,7,7,9
⦁ WITH 와 VIEW
1) 공통점
반복적으로 SQL문을 사용하는 경우 그 블록에 대해 이름을 부여하고 재사용할 수 있게 함으로써
쿼리성능을 높이고 코드를 깔끔하게 한다. ( 가상의 테이블을 만드는 것)
2) 차이점
WITH로 만든 가상테이블은 정의된 쿼리문 안에서만 실행되고 없어지지만
VIEW로 만든 가상테이블은 따로 DROP문으로 삭제하기 전까지 없어지지 않는다.
⦁ WITH 절 사용예제
WITH TEST_WITH AS(
SELECT NUM FROM A_TABLE WHERE NUM<5
UNION ALL
SELECT NUM FROM B_TABLE WHERE NUM<5
)
SELECT * FROM TEST_WITH