SQL 전문가 가이드 (2013년)
집합 연산자(SET OPERATOR) 0 0 78,959

by 구루비스터디 UNION UNION ALL INTERSECT MINUS [2013.09.01]


  1. 집합 연산자
    1. UNION EXAMPLE
    2. UNION ALL EXAMPLE
    3. INTERSECTIN EXAMPLE
    4. MINUS EXAMPLE


집합 연산자

  • 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회하는 방법 중에 또 다른 방법이 있는데 그 방법이 바로 집합 연산자(Set Operator)를 사용하는 방법이다.
  • 종류는 아래와 같다.


집합 연산자연산자의 의미
UNION여러 개의 SQL문의 결과에 대한 합집합으로 결과에서 모든 중복된 행은 하나의 행으로 만든다.
UNION ALL여러 개의 SQL문의 결과에 대한 합집합으로 중복된 행도 그대로 결과로 표시된다. 즉, 단순히 결과만 합쳐놓은 것이다. 일반적으로 여러 개의 결과가 상호 배타적인(Exclusive)일 때 많이 사용한다. 개별 SQL문의 결과가 서로 중복되지 않는 경우, UNION과 결과가 동일한다. (결과의 정렬 순서에는 차이가 있을 수 있음)
INTERSECT여러 개의SQL문의 결과에 대한 교집합이다. 중복된 행은 하나의 행으로 만든다.
EXCEPT앞의 SQL문의 결과에서 뒤의 SQL문의 결과에 대한 차집합이다. 중복된 행은 하나의 행으로 만든다. (일부 데이터베이스는 MINUS를 사용함)



UNION EXAMPLE


SELECT TEAM_ID 팀코드
     , PLAYER_NAME 선수명
     , POSITION 포지션
     , BACK_NO 백넘버
     , HEIGHT 키 
  FROM PLAYER 
 WHERE TEAM_ID = 'K02' 
 UNION 
SELECT TEAM_ID 팀코드
     , PLAYER_NAME 선수명
     , POSITION 포지션
     , BACK_NO 백넘버
     , HEIGHT 키 
  FROM PLAYER 
 WHERE POSITION = 'GK';


UNION ALL EXAMPLE


SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 
  FROM PLAYER 
 WHERE TEAM_ID = 'K02' 
 UNION ALL 
SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 
  FROM PLAYER 
 WHERE POSITION = 'GK'; 


INTERSECTIN EXAMPLE


SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 
  FROM PLAYER 
 WHERE TEAM_ID = 'K02' 
INTERSECT 
SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 
  FROM PLAYER 
 WHERE POSITION = 'GK' 
 ORDER BY 1, 2, 3, 4, 5; 


MINUS EXAMPLE


SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 
  FROM PLAYER 
 WHERE TEAM_ID = 'K02' 
 MINUS 
SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 
  FROM PLAYER 
 WHERE POSITION = 'MF' 
ORDER BY 1, 2, 3, 4, 5; 

"구루비 데이터베이스 스터디모임" 에서 2013년에 "SQL 전문가 가이드" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/2378

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입