SQL 첫걸음 - 4

연꽃·2021년 12월 28일
0

컴퓨터 서적

목록 보기
10/14
post-thumbnail

7장 복수의 테이블 다루기

🏀 합집합 구하기 - UNION

관계형 모델에서의 관계형은 수학 집합론의 관계형 이론에서 유래하였다. 이것의 요점은 데이터베이스의 데이터를 집합으로 간주해 쉽게 다루자는 것이다.

데이터베이스를 집합에 대응시켰을 때, 데이터베이스의 테이블은 집합과 연결이 되고 테이블의 행은 집합의 요소와 연결이 된다.

합집합이란 집합을 서로 더하는 것을 말한다. 예를들어 A라는 집합과 B라는 집합이 있다고 가정해보자. A = {1,2,3,4,5}이고 B = {4,5,6,7}일 때, A와 B의 합집합은 {1,2,3,4,5,6,7}이 될 것이다.

이를 데이터베이스에 적용해보자. C라는 테이블과 D라는 테이블이 있다고 가정해보자. C와 D는 다음과 같다.

a
1
2
3
4
5

a
4
5
6
7

이 두 테이블의 합집합을 구하려면 다음과 같은 쿼리문을 작성해야한다.

SELECT * FROM C
UNION
SELECT * FROM D;

그렇다면 다음과 같은 결과가 출력될 것이다.

a
1
2
3
4
5
6
7

이처럼 UNION을 이용하여, 실제 집합처럼 합집합을 쉽게 구할 수 있다.
나아가 UNION을 이용하여 합집합을 구할 때, ORDER BY를 사용하여 정렬할 수 있다. 주의할 것은 가장 마지막 SELECT명령에 대해서만 ORDER BY구를 지정할 수 있다.

🏀 테이블 결합

테이블의 집합 연산에서는 세로 방향으로 데이터를 늘리거나 줄이는 연산을 하였다. 이와는 반대로 결합에서는 가로 방향으로 데이터가 늘어나는 연산을 할 것이다. 이를 교차결합이라고 한다.

이는 곱집합과 관련이 있다. 곱집합은 합집합과같은 집합의 연산 방법 중 하나이다. 예를 들면 한 시즌에 10화까지 있는 시트콤이 3시즌 방영된다고 생각해보자. 이를 통해 곱집합의 개념을 생각하면 간단하다.

내부결합에 대해서 알아보자. 실제로 교차결합보다는 내부결합이 더 자주 사용되는 개념이다. 내부결합은 중복되지 않는 유일한 데이터인 기본키를 가진 테이블과 이와 관련된 다른 테이블에 외례키를 부여한다. 이를 통해 특정 테이블이 다른 테이블을 참조하여 원하는 결과를 출력 할 수 있다.

책에 있는 예시를 직접 보면서 확인해보자. 상품이라는 테이블과 재고수라는 테이블이 다음과 같이 주어졌다.

상품코드상품명메이커명가격상품분류
01Aa100식료품
02Ba200식료품
03Cb500생활용품

상품코드입고날짜재고수
012019-01-03200
022019-02-07500
032019-12-1710

이러한 상황에서 우리는 각 상품의 재고가 얼마나 남았는지 확인하고 싶다고 가정을 해보자. 하지만 상품코드로 보고 싶지 않고 상품명에 따른 재고가 얼마인지 알 수 있다면 조금 더 보기 좋을 것이다. 이러한 상황에서 내부결합이 필요하다. 이는 INNER JOIN으로 가능하다.

SELECT 상품.상품명, 재고수.재고수
FROM 상품 INNER JOIN 재고수
ON 상품.상품코드 = 재고수.상품코드;

이러한 쿼리문을 작성한다면 다음과 같은 결과가 출력될 것이다.

상품명재고수
A200
B500
C10

참고 : SQL 첫걸음

profile
우물에서 자라나는 중

0개의 댓글