1. 관계형 대수의 분류
- 8가지 중 4가지는 일반집합연산자, 나머지4가지는 순수관계연산자
2. 일반집합연산자와 SQL의 비교
- 일반집합연산자는 SQL문의 UNION/ UNION ALL/ INTERSECT / EXCEPT /CROSS JOIN 기능으로 구현
- 일반집합연산자가 SQL문에서 어떤 기능을 구현하는지 정리
UNION 연산 > UNION 기능으로 구현
- UNION연산은 수학적으로 합집합을 하는 연산
- 교집합의 중복을 제거하는 연산을 수행 > 시스템과부화 발생 가능성
- UNION ALL연산은 교집합의 중복을 제거하지 않고 중복된 것을 그대로 보여줌
- UNION과 UNION ALL의 출력결과가 같다면 UNION ALL을 권장
INTERSECTION 연산 > INTERSECT 기능으로 구현
- INTERSECTION은 수학의 교집합을 제공하기 위한 연산
- 두 집합의 공통 집합을 추출한다
DIFFERENCE연산 > EXCEPT(Oracle은 MINUS)
- DIFFERENCE는 차집합으로 첫번째 집합에서 두번째 집합의 공통집합을 추출
PRODUCT연산 > CROSS JOIN 기능으로 구현
- 곱집합
- JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합
- 양쪽 집합의 M*N건의 데이터 조합이 발생
3. 순수관계연산자와 SQL의 비교
- 순수관계연산자는 SQL문의 WHERE / SELECT / 다양한 JOIN 기능으로 구현
SELECT연산 > WHERE절로 구현
- 행들에 대한 부분집합
PROJECT연산 > SELECT절로 구현
- PROJECT연산은 SQL문장에서는 SELECT절의 칼럼선택 기능으로 구현
- 열들에 대한 부분집합
NATURAL JOIN연산 > 다양한 JOIN기능으로 구현
- JOIN연산은 보통 WHERE절에 조인 조건을 기재하여 구현
4. 조인의 형태
INNER JOIN
• INNER JOIN은 JOIN 조건에서 동일한 값이 있는(매칭되는) 행만 반환한다.
• 동등(EQUI) 조인이라고도 한다.
NATURAL JOIN
• NATURAL JOIN은 두 테이블 간의 동일한 이름을 갖는 모든 칼럼들에 대해 INNER JOIN을 수행한다.
• 예를 들어 TB_EMP, TB_DEPT 테이블 모두 DEPT_CD라는 칼럼이 존재한다 면 DEPT_CD 칼럼을 기준으로 INNER 조인된다.
USING 조건절
• NATURAL JOIN에서는 모든 일치되는 칼럼들에 대해 INNER JOIN이 이루어 지지만 FROM절의 USING 조건절을 이용하면 같은 이름을 가진 칼럼들 중에서 원하는 칼럼에 대해서만 선택적으로 INNER JOIN을 할 수가 있다.
• 예를 들어 TBLEMP, TB_DEPT 테이블 모두 DEPT_CD, DEPT_CD_2라는 칼럼이 존재한다면 USING 조건절에서 2개의 칼럼 중 어떤 칼럼으로 조인할지 지 정할 수 있다.
ON 조건절
• JON 서술부(ON 조건절)와 비 JOIN 서술부(WHERE 조건절)를 분리하여 이해 가 쉬우며 칼럼명이 다르더라도 JOIN 조건을 사용할 수 있는 장점이 있다.
• 예를 들어 ON 조건절을 이용해서 TB_EMP 테이블의 DEPT_CD 칼럼과 7B.DEPT 테이블의 DEPT_CD_2 칼럼을 기준으로 조인할 수 있다.
CROSS JOIN
• CROSS JOIN은 일반집합연산자의 PRODUCT 개념으로, 테이블 간 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 말한다
OUTER JOIN
• INNER JOIN과 대비하여 OUTER JOIN이라고 불리며, JOIN 조건에서 동일한 값이 없는 행도 결과집합에 포함시킬 때 사용한다.
5. 3개의 테이블 조인
- 최소 조인 조건 개수 = 조인 테이블 수 -1
6. OUTER JOIN의 종류
LEFT OUTER JOIN
• FROM에 기재한 테이블을 중심으로 왼쪽에 기재한 테이블이 OUTER 집합이 되고 오른쪽에 기재한 테이블이 INNER 집합이 된다.
• 왼쪽에 있는 OUTER 집합을 기준으로 오른쪽에 있는 INNER 집합은 매칭되는 데이터만 출력된다.(왼쪽 OUTER는 다 나오고, 오른쪽 INNER는 있는 것만 보여줌)
RIGHT OUTER JOIN
• FROM절에 기재한 테이블을 중심으로 오른쪽에 기재한 테이블이 OUTER 집합이 되고 왼쪽에 기재한 테이블이 INNER 집합이 된다.
• 오른쪽에 있는 OUTER 집합을 기준으로 왼쪽에 있는 INNER 집합은 매칭되는 데 이터만 출력된다.(오른쪽 OUTER는 다 나오고, 왼쪽 INNER는 있는 것만 보여줌)
FULL OUTER JOIN
• FROM에 기재한 테이블에 대해서 LEFT OUTER JOIN의 결과와 RIGHT OUTER JOIN의 결과, 그리고 INNER JOIN의 결과가 모두 출력된다.
'SQL > SQLD 준비' 카테고리의 다른 글
[SQL 자격검정 실전문제] 데이터 모델링의 이해 31~52번 (2) | 2023.12.06 |
---|---|
[엔터티 식별자] (0) | 2023.11.21 |
[관계 (Relationship)] (0) | 2023.11.21 |
[속성 (Attribute)] (0) | 2023.11.21 |
[엔터티 (Entity)] (0) | 2023.11.21 |