PostgreSQL Tutorial 05. Set Operations

jwKim·2023년 2월 15일
0

🎯 PostgreSQL Tutorial

목록 보기
5/9

01. UNION

01-01. 개요 및 샘플 데이터 생성

UNION 연산자는 2개 이상의 SELECT 구문을 하나의 결과로 합칠 때 사용한다.

UNION 연산자 사용 시 주의할 점은 아래와 같다.

  • 합치려는 쿼리의 컬럼 개수, 컬럼 순서가 동일해야 함
  • 쿼리 하려는 데이터의 데이터 타입이 동일해야 함
  • UNION을 사용하면 중복 값이 제거 되기 때문에 중복 값을 출력하고 싶으면 UNION ALL 연산자 사용
-- 예제를 위한 새로운 테이블 생성
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);

\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad↑ top_rated_films

\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad↑ most_popular_films



01-02. UNION 예제

-- UNION 
SELECT * 
FROM 
	top_rated_films
	
UNION

SELECT * 
FROM 
	most_popular_films;

top_rated_films와 most_popular_films가 합쳐짐을 볼 수 있다. 그런데 ‘The Godfather’는 두 테이블에 중복되어 있으므로 UNION의 결과로 중복이 제거 되어 출력된다.

-- UNION ALL의 사용 
SELECT * 
FROM 
	top_rated_films
	
UNION ALL

SELECT * 
FROM 
	most_popular_films;

UNION ALL을 사용하여 앞선 예제에서는 제거 되었던 ‘The Godfather’이 중복 제거 되지 않고 출력됨을 볼 수 있다.

-- ORDER BY와 함께 사용
SELECT * 
FROM 
	top_rated_films

UNION ALL

SELECT * 
FROM 
	most_popular_films
ORDER BY 
	title;

ORDER BY 결과로 title을 기준으로 오름차순 정렬한 것을 볼 수 있다. UNION과 ORDER BY를 함께 사용할 때에는 ORDER BY를 마지막 쿼리 뒤에 쓴다.



02. INTERSECT

02-01. 개요

INTERSECT는 두 개 이상의 SELECT문에서 결과를 통합할 때 사용한다.

INTERSECT 연산자 사용 시 주의 사항은 아래와 같다.

  • SELECT문에서 조회하려는 컬럼의 수와 순서가 동일 해야 함
  • 컬럼의 데이터 타입이 동일 해야함



02-02. INTERSECT 예제

-- INTERSECT의 사용
SELECT *
FROM 
	most_popular_films 

INTERSECT

SELECT *
FROM
	top_rated_films;

UNION과는 반대로 중복되는 값만 출력된다.



03. EXCEPT

03-01. 개요

EXCEPT는 두 개 이상의 SELECT 문에서 사용되는데, 첫 번째 쿼리의 결과 데이터 중 두 번째 쿼리의 결과를 제외한 결과를 반환한다.

EXCEPT 연산자 사용 시 주의 사항은 아래와 같다.

  • 조회하려는 컬럼의 개수, 순서가 동일해야 함
  • 컬럼의 데이터 타입이 동일해야 함



03-02. EXCEPT 예제

-- top_rated_films 기준으로 EXCEPT 사용
SELECT *
FROM 
	most_popular_films
	
EXCEPT

SELECT *
FROM
	top_rated_films;

‘The Godfather’은 두 번째 쿼리(most_popular_films)의 결과에 포함되어 있으므로, 최종 결과에서는 제외되어 결과 출력됨

0개의 댓글