앞에서 컬럼( COLUMN ) 과 컬럼( COLUMN) 을 연결하는 JOIN 에 대해서 배웠다면, 이번에는 행(ROW) 과 행(ROW)을 연결시켜주는 'UNION' 에 관해서 이야기하려고 한다. UNION에 대해서 이야기하기 위해서는 SET OPERATOR ( SET 연산자, 집합연산자) 를 알아야한다. UNION 은 집합연산자 중의 한 종류이기 때문이다. 집합연산자에는 UNION 말고도 ' UNION ALL ' , ' INTERSECT ' , ' MINUS ' 를 가지고 있다. UNION과 UNION ALL 에 대해서와 둘의 차이점에 대해서 자셍히 설명하고 나머지 두개는 간략하게 설명하도록 하겠다. 앞에서 JOIN을 설명할 때, 집합을 가지고 설명했는데 , UNION 또한 집합을 통해 설명하면 쉽게 이야기 할 수 있기에 집합을 가정하고 설명하도록 하겠다.
-- 집합 A 와 B 를 테이블 이라고 생각해보자
-- 집합 A ( 또는 테이블 A ) = { 1 , 2 , 3 }
-- 집합 A ( 또는 테이블 A ) = { 3 , 4 , 5 }
A UNION B = { 1 , 2 , 3 , 4 , 5 } // B UNION A = { 1 , 2 , 3 , 4 , 5 }
-- ' UNION ' 은 합집합이라고 생각하면 된다. 또한 , 합집합을 하는 동시에 두 집합사이의 공통 원소가 있다면, 중복을
-- 없애고 공통원소를 하나만 출력하도록 한다. UNION 을 하면 항상 첫번째 컬럼을 기준으로 오름차순 정렬되어 나온
-- 다. 그러므로, A와 B의 위치를 바꿔도 같은 값이 나오게 된다.
A UNION ALL B = { 1 , 2 , 3 , 3 , 4 , 5 } // B UNION ALL A = { 3 , 4 , 3 , 4 , 5 }
-- ' UNION ALL ' 은 UNION 과 마찬가지로 합집합이지만, 둘 사이에는 확연한 차이가 있다. UNION 은 A와 B 사이의
-- 공통 원소가 있다면, 즉 , 중복이 있는 사항들을 없애고 하나만 출력해준 반면, UNION ALL 은 모두 출력해준다는 차이--- 점이 있습니다. 또한, UNION ALL 은 오름차순 정렬을 해주지 않고, A UNION ALL B 라면 A 부터 나오고, 그다음에는 --- B로 나오게 됩니다. 즉 , UNION ALL 을 한 순서대로 들어가게 됩니다.
다음으로는 INTERSECT( 교집합 ) , MINUS ( 차집합 ) 에 대해 설명하도록 하겠습니다. INTERSECT 는 집합에서의 교집합의 의미와 매우 동일하다. A INTERSECT B 를 하게 되면, 테이블( 또는 뷰 ) A 와 테이블( 또는 뷰 ) B 중에서 데이터의 값이 동일한 행을 찾게된다면 , 이를 뽑아주는 것이다. 다음으로 , A MINUS B 를 하면 , 테이블 ( 또는 뷰 ) 에서 A 에서 B와 공통된 행을 빼주고, 뽑아주는 것이다. MINUS 는 실수로 무언가를 지웠을 경우에, 백업 데이터와의 비교를 통해서 , 무엇이 사라졌는 지 파악할 수 있다.
이렇게, 집합 연산자 ( SET OPERATOR ) 에 대해서 간단히 배워봤습니다. UNION 과 UNION ALL 차이점을 알고 있는 것이 매우 중요하니 , 이에 대해서 까먹지 않도록 주의하는 게 좋을 거 같습니다.
''국비지원'의 시작' 카테고리의 다른 글
오라클 비긴즈 08 ( Constraints ( 제약 ) ) (0) | 2023.02.15 |
---|---|
오라클 비긴즈 07 ( SQL (Structure Query Language) ) (0) | 2023.02.14 |
오라클 비긴즈 05 ( JOIN ) (0) | 2023.02.10 |
오라클 비긴즈 04 ( GROUP BY절 , GROUPING SETS , ROLLUP ) (0) | 2023.02.09 |
오라클 비긴즈 03 ( VIEW ) (0) | 2023.02.07 |