본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

23강 SQL이 뭐지? PostgreSQL UNION

by DoitSQL 2022. 12. 19.
728x90

23강 SQL이 뭐지? PostgreSQL UNION   

PostgreSQL

SQL이 뭐지? 23강 시작합니다.

 

이번 강의에서는

 PostgreSQL UNION

에 대해서 알아보겠습니다.

 

여러 쿼리의 결과 집합을 단일 결과 집합으로 결합하는 PostgreSQL UNION 연산자에 대해서 공부합니다.


Introduction to PostgreSQL UNION operator   

UNION 연산자는 두 개 이상의 SELECT 문의 결과 집합을 단일 결과 집합으로 결합합니다.

다음은 두 쿼리의 결과 집합을 결합하는 UNION 연산자의 구문을 보여줍니다.

SELECT select_list_1
FROM table_expresssion_1
UNION
SELECT select_list_2
FROM table_expression_2   

 

UNION 연산자를 사용하여 두 쿼리의 결과 집합을 결합하려면 쿼리가 다음 규칙을 준수해야 합니다.

● 두 쿼리의 선택 목록에 있는 열의 수와 순서가 같아야 합니다.
 데이터 유형이 호환되어야 합니다.

 

UNION 연산자는 결합된 데이터 집합에서 중복된 행을 모두 제거합니다. 중복 행을 유지하려면 UNION ALL을 대신 사용합니다.

다음 Venn digram은 UNION의 작동 방식을 보여줍니다.


 

PostgreSQL UNION with ORDER BY clause   

UNION 연산자는 첫 번째 쿼리 결과 집합의 행을 두 번째 쿼리 결과 집합의 앞, 뒤, 또는 두 번째 쿼리 결과 집합의 행 사이에 배치할 수 있습니다.

최종 결과 집합의 행을 정렬하려면 두 번째 쿼리의 ORDER BY 절을 사용합니다.

실제로 UNION 연산자를 사용하여 데이터 웨어하우스 또는 비즈니스 인텔리전스 시스템에서 완벽하게 정규화되지 않은 유사한 테이블의 데이터를 결합하는 경우가 많습니다.


PostgreSQL UNION examples   

PostgreSQL UNION 연산자를 사용하는 몇 가지 예를 들어 보겠습니다.

 

Setting up sample tables   

다음 문은 top_rated_films와 most_popular_films의 두 테이블을 만들고 이 테이블에 데이터를 삽입합니다.

DROP TABLE IF EXISTS top_rated_films;
CREATE TABLE top_rated_films(
title VARCHAR NOT NULL,
release_year SMALLINT
);

DROP TABLE IF EXISTS most_popular_films;
CREATE TABLE most_popular_films(
title VARCHAR NOT NULL,
release_year SMALLINT
);

INSERT INTO 
   top_rated_films(title,release_year)
VALUES
   ('The Shawshank Redemption',1994),
   ('The Godfather',1972),
   ('12 Angry Men',1957);

INSERT INTO 
   most_popular_films(title,release_year)
VALUES
   ('An American Pickle',2020),
   ('The Godfather',1972),
   ('Greyhound',2020);

COMMIT;   

 

다음은 top_rated_films 테이블의 데이터를 보여줍니다.

SELECT * FROM top_rated_films;   

 

다음은 most_popular_films 테이블의 데이터를 보여줍니다.

SELECT * FROM most_popular_films;   

 

1) Simple PostgreSQL UNION example   

다음 문은 UNION 연산자를 사용하여 두 테이블의 데이터를 결합합니다.

SELECT * FROM top_rated_films
UNION
SELECT * FROM most_popular_films;   

쿼리는 다음 결과를 반환합니다.

UNION 연산자가 중복된 행 하나를 제거하므로 결과 집합에는 5개의 행이 포함됩니다.

The Godfather이 중복 제거되었습니다.

 

2) PostgreSQL UNION ALL example   

다음 문은 UNION ALL 연산자를 사용하여 top_rated_films 테이블과 most_popular_films 테이블의 결과 집합을 결합합니다.

SELECT * FROM top_rated_films
UNION ALL
SELECT * FROM most_popular_films;   

이 예에서는 중복 행이 결과 집합에 유지됩니다.

 

3) PostgreSQL UNION ALL with ORDER BY clause example   

UNION 연산자가 반환한 결과를 정렬하려면 마지막 쿼리의 ORDER BY 절 끝에 다음과 같이 배치합니다.

SELECT * FROM top_rated_films
UNION ALL
SELECT * FROM most_popular_films
ORDER BY title;   

각 쿼리 끝에 ORDER BY 절을 배치하면 결합된 결과 집합이 예상대로 정렬되지 않습니다.

UNION 연산자가 각 쿼리의 정렬된 결과 집합을 결합할 때 최종 결과 집합의 행 순서를 보장하지 않기 때문입니다.


이번 강의에서는 여러 쿼리의 결과 집합을 단일 결과 집합으로 결합하는 PostgreSQL UNION과 UNION ALL 에 대해서 배웠습니다.

UNION 과 UNION ALL의 차이는 중복제거입니다.

 

수고하셨습니다.


 본 강의는 PostgreSQL Tutorial을 참조합니다. 

 

PostgreSQL Tutorial - Learn PostgreSQL from Scratch

Welcome to the PostgreSQLTutorial.com website! This PostgreSQL tutorial helps you understand PostgreSQL quickly. You’ll master PostgreSQL very fast through many practical examples and apply the knowledge in developing applications using PostgreSQL. If yo

www.postgresqltutorial.com

실습용 테이블에 대해서는 3강을 참조하세요.

 

3강 SQL이 뭐지? 도구들을 설치해보자. ( PostgreSQL, HeidiSQL )

지난 시간까지 SQL이 뭔지 대충 감을 잡는 시간을 가졌습니다. 이번 시간에는 본격적인 SQL을 공부하기 위해서 도구들을 설치해 보겠습니다. 1. PostgreSQL 설치 ( Windows10 64bit 기준) 2. He


Do it! SQL을 찾아 주셔서 감사합니다. 여러분의 댓글이 큰 힘이 됩니다.

 

728x90

댓글