[컴퓨터공학]/[데이터베이스]

[데이터베이스] SQL 집합 연산

딥러닝 도전기 2022. 6. 13. 19:45

[데이터베이스] SQL 집합 연산

 

SQL의 집합 연산에 대해 알아보도록 하겠습니다.

  • INTERSECT - 교집합
  • UNION - 합집합
  • EXCEPT - 차집합

 


1. INTERSECT

(SELECT name, address
 FROM MovieStar
 WHERE gender = 'F')
 
 INTERSECT
 
(SELECT name, address
 FROM MovieExec
 WHERE netWorth > 10000);

위의 예제는 INTERSECT를 사용하여 교집합을 구하는 예제입니다.

INTERSECT는 두 쿼리에서 모두 출력되는 튜플을 반환합니다.

즉, 위의 예제에서는 MovieStar의 gender가 'F' 이면서 MovieExec의 연봉이 10000보다 큰 튜플의 name, address를 리턴합니다.

 

2. UNION

(SELECT title, year FROM Movie)

 UNION
 
(SELECT movieTitle AS title, movieYear AS year
 FROM StarsIn);

위의 예제는 UNION을 사용하여 합집합을 구하는 예제입니다.

UNION은 두 쿼리에서 출력되는 결과를 단일 결과 세트로 연결합니다.

즉, 위의 예제의 반환 값은 Movie테이블에서 title, year를 뽑은 튜플들과 StarsIn 테이블에서 title, year을 뽑은 튜플의 concatenation이 됩니다.

 

 

3. EXCEPT

(SELECT name, address FROM MovieStar)

 EXCEPT

(SELECT name, address FROM MovieExec);

위의 예제는 EXCEPT를 사용하여 차집합을 구하는 예제입니다.

EXCEPT는 앞의 쿼리에서 출력되는 튜플 중, 뒤의 쿼리에서 출력되는 튜플을 제외한 튜플을 출력합니다.

즉, 위의 예시에서는 MovieStar 중 MovieExec가 아닌 순수한 MovieStar만 출력하게 됩니다.

 

차집합을 생각하시면 될 것 같습니다.

 

집합 연산은 기본적으로 중복을 허용하지 않는 Set이기 때문에, 중복을 허용하기 위해서는 'ALL' 키워드를 사용합니다.

ex)

UNION ALL

INTERSECT ALL

EXCEPT ALL

반응형