본문 바로가기

데이터베이스

데이터베이스 정리 15 - 결함연산, 집합연산

LEFT OUTER JOIN, RIGHT OUTER JOIN, INNER JOIN 은 테이블을 합치는 작업의 일부분에 불과하다.

 

테이블을 합치는 작업을 '연산'이라고 표현한다.

테이블을 합치는 연산은 크게 결합 연산집합 연산으로 나눌 수 있다.

결합 연산은 테이블을 가로 방향으로 합치는 것에 관한 연산이다.

집합 연산은 테이블을 세로 방향으로 합치는 것에 관한 연산이다.

 

JOIN 결합연산에 해당한다.

 

집합 연산 - 테이블 하나를 집합 하나로 보고, 그 안의 각 row를 하나의 원소로 간주하고 진행되는 연산

집합 연산은 같은 종류의 테이블끼리만 가능하다.

같은 종류의 테이블이 아니면 row의 컬럼 구조가 다르기 때문

테이블의 row 하나하나를 집합에서 말하는 하나의 원소라고 생각하면 쉽다.

 

1. A ∩ B (INTERSECT 연산자 사용)

SELECT * FROM member_A
INSERSECT
SELECT * FROM member_B

 

2. A - B (MINUS 연산자 또는 EXCEPT 연산자 사용)

SELECT * FROM member_A
MINUS
SELECT * FROM member_B

 

3. B - A (MINUS 연산자 또는 EXCEPT 연산자 사용)

SELECT * FROM member_B
MINUS
SELECT * FROM member_A

 

4. A U B (UNION 연산자 사용)

SELECT * FROM member_A
UNION
SELECT * FROM member_B

 

합집합을 나타낼때, 중복을 제거하고 하나만 표시된다.

같은 원리로 UNION 연산자도 두 테이블에 공통적으로 존재하는 row는 하나만 결과에 표시된다.

 

JOIN의 종류

1. NATUAL JOIN

두 테이블에서 같은 이름의 컬럼을 찾아서 자동으로 그것들을 조인 조건을 설정하고,

INNER JOIN을 해주는 조인으로, 우리말로는 자연 조인이라고도 한다.

NATAUL JOIN은 조인 조건을 자동으로설정해주기 때문에 ON절을 쓸 필요가 없다.

 

2. CROSS JOIN

CROSS JOIN은한 테이블의 하나의 row에 다른 테이블의 모든 row들을 매칭하고,

그 다음 row에서도 또, 다른 테이블의 모든 row들을 매칭하는 것을 반복함으로써

두 테이블의 row들의 모든 조합을 보여주는 조인이다.

두 집합의 모든 원소들의 조합을 나타낸 것을 수학의 집합 이론에서는 '카르테시안 곱' 이라고 하는데,

CROSS JOIN은 두 테이블의 Cartesian Product를 구하는 조인인 것이다.

잘 쓸 일이 없는 종류의 조인이다.

 

3. SELF JOIN 

말 그대로테이블이 자기 자신과 조인을 하는 경우

그냥 서로 별개인 두 테이블을 조인하는 것처럼 생각하면 된다.

하나의 테이블에 담긴 데이터를 다양한 다양한 관점에서 바라볼 수 있게 된다.

 

4. FULL OUTER JOIN

두 테이블의 LEFT OUTER JOIN 과 RIGHT OUTER JOIN 결과를 합치는 조인이다.

대신, 이때 두 결과에 모두 존재하는 row들(두 테이블에 공통으로 존재하던 row들)은 한번만 표현한다.

 

5. Non-Equi 조인

Equality Condition의 줄임말로, 동등 조건을 의미한다.

이 때까지 해온 조인은 모두 동등 조건을 판단하는 Equi 조인이였다.