개발일기

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