2010.08.03 03:18 연구실/SQL

이 포스트를 만든 목적

  • 심심해서

이 포스트의 준비물

  • gVim 7.2
  • Postgresql 8.4.2
  • pgAdmin 1.10.1

참조 링크

내용

SQL UNION 은 무엇인가?

  • SQL 연산자이다.
  • 두개 이상의 SELECT 결과를 합칠 때 사용 한다.
  • 결과들을 합칠 때, 중복 제거를 할 수 있고, 중복을 포함 할 수 있다.

SQL UNION 문법은 어떻게 되는가?

SQL UNION 을 사용 할 때 주의 해야 하는게 있는가?

  • 여러 SELECT 결과 칼럼(열)들은 모두 동일한 갯수를 가지고 있어야 한다.
    - 위 샘플에서 order_num 칼럼 1개만 쓰면, 모둔 SELECT 문은 칼럼 1개만 써야 한다.

  • 여러 SELECT 결과 칼럼(열)들은 다른 SELECT 결과 칼럼(열)들과 동일한 데이터 형이거나 호환 되어야 한다.
    - 위 샘플에서 order_num 칼럼의 데이터 타입이 char 이라면, 다른 SELECT 문 결과 역시 char와 같거나 호환 되어야 한다.

SQL UNION 을 어떻게 이해 하는게 좋은가?

  1. 종이와 연필을 준비한다.
  2. 여러 SELECT 문의 결과를 각각 그린다.

  3. UNION 일 경우, 테이블 T를 준비한다.
  4. 각 SELECT->row 들을 테이블 T와 똑같은게 있는지 검사한다.
  5. 똑같은게 있을 경우, T에 기입하지 않는다.
    똑같은게 없을 경우, T에 기입한다.
  6. 4 ~ 5번 작업을 다 할 때까지 반복한다.
  7. 여기서 나온 T가 UNION 의 결과이다.

  8. UNION ALL 일 경우, 각각 그린 SELECT->row들을 테이블 A에 기입한다.
  9. 모든 SELECT->row들을 A에 다 기입했다면, 이 테이블 A가 UNION ALL 값들인 것이다.

맛보기 그림

orderitems table

orders table

SELECT UNION

UNION 해석

여담

  • 직접 UNION 을 해보기 전까진 잘 모른다.


posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요

  1. Favicon of http://www.ikpil.com 최익필 2010.08.06 18:43  Addr  Edit/Del  Reply

    오늘 쓸일이 있어서 썻다.
    28개의 row 가 모두 1:1 중복되는지 확인하기 위해서 사용했다.