SQL : 복수 테이블

Vorhandenheit ·2021년 12월 20일
0

Database

목록 보기
5/28

복수의 테이블

관계형 모델에서 관계형은 수학 집합론의 관계형 이론에서 유래했습니다.

집합연산

1. 합집합

SELECT * FROM sample1
UNION
SELECT * FROM sample2;
  • ';' 맨 마지막에 붙입니다.
  • 각 SELECT 명령의 실행 결과를 합집합으로 계산해 최종적으로 결과를 반환합니다.

(1) UNION 사용할 떄 ORDER BY

UNION 으로 SELECT 명령을 결합해 합집합을 구하는 경우, 각 SELECT 명령에 ORDER BY를 지정해 정렬할 수 없습니다.
ORDER BY 를 지정할 때는 마지막 SELECT 명령에만 지정하도록 합니다.

SELECT A as C FROM sample1
UNION B as C FROM sample2 ORDER BY C;
  • UNION으로 SELECT명령을 연결시키는 경우, 가장 마지막 SELECT 명령에 대해서만 ORDER BY 구를 지정할 수 있습니다.
  • 또 ORDER BY 구에 지정하는 열은 별명을 붙여 이름을 일치시켜야합니다

(2) UNION ALL

UNION을 하면 중복값이 존재하지않는 것을 전제로합니다. 하지만 중복을 제거하지않고 합치고 싶은 경우 UNION ALL을 사용합니다.

SELECT * FROM sample1
UNION ALL
SELECT * FROM sample2

테이블 결합

집합 연산에서는 세로(행) 방향으로 데이터가 늘어나는 계산을 했습니다.
테이블 결합은 가로(열)방향으로 데이터가 늘어나는 계산입니다.

1. 곱집합과 교차결합

두 개의 집합을 곱하는 연산 방법으로 '적집합' 또는 카티전곱'이라 불립니다.

(1) 교차결합

테이블을 두 개 지정하면 이들은 곱집합으로 계산이 됩니다.

SELECT * FROM 테이블명1, 테이블명2

  • 테이블을 복수로 지정하면 교차결합을 합니다.

(2) 내부결합

교차결합의 경우 테이블 수가 많아지면 조합수가 엄청나게 늘어나 집합이 거대해집니다. 그래서 결합 방법으로는 교차결합보다 내부결합이 자주 사용되어집니다.

내부결합이란 교차결합으로 계산된 곱집합에서 원하는 조건을 검색하는 것입니다. (INNER JOIN)

  • FROM 구에 테이블을 복수 지정해 가로방향으로 테이블을 지정할 수 있다
  • 교차결합을 하면 곱집합으로 계산된다
  • WHERE 조건을 지정해 곱집합에서 필요한 조합만 검색할 수 있다
  • 두 개의 테이블을 가로로 결합할 수 있습니다.
SELECT * FROM 테이블명 1 INNER JOIN 테이블명2 ON 결합조건

(3) 외부결합

외부 결합은 '어느 한 쪽에만 존재하는 데이터행을 어떻게 다룰지'를 변경할 수 있는 결합 방법

테이블에 새로운 행을 추가 했을 경우, 내부결합에서는 새로운 행이 제외가 되서 값을 찾을 경우 NULL 이 나옵니다. 그럴 경우 외부결합을 사용합니다.


관계형 모델

관계형 모델의 기본적 요소는 Relation 입니다. 이는 SQL의 테이블에 해당됩니다.
SQL에서 행은 관계형 모델에서 '튜플'이라 불립니다. 이 릴레이션은 튜플의 집합입니다.

  • 합집합
    합집합은 릴레이션끼리 덧셈
SELECT * FROM A UNION SELECT * FROM B
  • 차집합
    릴레이션끼리 뺄셈
SELECT * FROM A EXCEPT SELECT * FROM B
  • 교집합
    릴레이션끼리 공통부분
SELECT * FROM A INTERSECT SELECT * FROM B
  • 곱집합
    릴레이션끼리 대전표를 조합하는 연산
SELECT * FROM A, B
SELECT * FROM A CROSS JOIN B
  • 선택
    튜플의 추출을 말합니다. 제한이라고 말하기도하는데 WHERE구에 조건을 지정해 데이터를 검색하는 것에 해당됩니다.
SELECT * FROM A WHERE 조건
  • 투영
    속성의 추출을 말합니다. SELECT구에 결과로 반환할 열을 지정하는 것에 해당
SELECT a FROM A
  • 결합
    릴레이션끼리 교차결합해 계산된 곱집합에서 결합조건을 만족하는 튜플을 추출하는 연산입니다. SQL 에서는 내부결합에 해당합니다.
SELECT a FROM A INNER JOIN B ON a.no = B.no
profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글