1. EQUI(등가) 조인(교집합)
(1) EQUI(등가) 조인
-
조인은 여러 개의 릴레이션을 사용해서 새로운 릴레이션을 만드는 과정
-
조인의 가장 기본은 교집합을 만드는 것
-
두 개의 테이블 간에 일치하는 것을 조인함
-
EQUI조인은 “=”을 사용해서 두 개의 테이블을 연결함
-
EQUI조인은 두 개의 테이블 전체를 읽은 다음 해시함수를 사용해서 두 개의 테이블을 연결함
-
해시조인은 EQUI조인만 사용 가능한 방법임
*해시조인(Hash Join)
-
먼저 선행 테이블을 결정하고 선행 테이블에서 주어진 조건(WHERE구)에 해당하는 행을 선택함
-
해당 행이 선택되면 조인 키를 기준으로 해시 함수를 사용해서 해시 테이블을 메인 메모리에 생성하고 후행 테이블에서 주어진 조건에 만족하는 행을 찾음
-
후행 테이블의 조인 키를 사용해서 해시 함수를 적용해 해당 버킷을 검색함
(2) INNER JOIN
-
EQUI조인과 마찬가지로 ISO 표준 SQL로 INNER JOIN이 있음
-
INNERT JOIN은 ON문을 사용해서 테이블을 연결함
-
INNERT JOIN구에 두 개의 테이블명을 서술하고 ON구로 조인 조건을 서술함
(3) INTERSECT 연산
-
INTERSECT 연산은 두 개의 테이블에서 교집합을 조회함
-
즉, 두 개 테이블에서 공통된 값을 조회 함
2. Non-EQUI(비등가) 조인
-
Non-EQUI는 두 개의 테이블 간에 조인하는 경우 “=”을 사용하지 않고 “>”, “<”, “>=”, “<=” 등을 사용함
-
즉, 정확하게 일치하지 않는 것을 조인하는 것임
3. OUTER JOIN
-
OUTER JOIN은 두 개의 테이블 간에 교집합(EQUI JOIN)을 조회하고 한쪽 테이블에만 있는 데이터도 포함시켜서 조회함
-
왼쪽 테이블에만 있는 행도 포함되면 LEFT OUTER JOIN이라 하고 반대의 경우 RIGHT OUTER JOIN이라고 함
-
FULL OUTER JOIN은 LEFT OUTER JOIN과 RIGHT OUTER JOIN 모두를 하는 것임
-
Oracle 데이터베이스에서는 OUTER JOIN을 할 때 “(+)” 기호를 사용해서 할 수 있음
4. CROSS JOIN
-
CROSS JOIN은 조인 조건구 없이 2개의 테이블을 하나로 조인함
-
조인구가 없기 때문에 카테시안 곱이 발생함(행x행)
-
FROM절에 “CROSS JOIN”구를 사용하면 됨
5. UNION을 사용한 합집합 구형
(1) UNION
-
UNION 연산은 두 개의 테이블을 하나로 만드는 연산
-
두 개의 테이블의 칼럼 수, 칼럼의 데이터 형식 모두가 일치해야 함
-
두 개의 테이블을 하나로 합치면서 중복된 데이터를 제거함
-
정렬(SORT) 과정을 발생시킴
(2) UNION ALL
-
UNION ALL은 두 개의 테이블을 하나로 합치는 것임
-
UNION처럼 중복을 제거하거나 정렬을 유발하지 않음
6. 차집합을 만드는 MINUS
-
MINUS연산은 두 개의 테이블에서 차집합을 조회함
-
먼저 쓴 SELECT문에는 있고 뒤에 쓰는 SELECT문에는 없는 집합을 조회함
-
MS-SQL에서는 MINUS와 동일한 연산인 EXCEPT임
'SQL 공부' 카테고리의 다른 글
(SQLD)그룹함수/윈도우 함수(Window Function) (0) | 2020.09.07 |
---|---|
(SQLD)계층형 조회(Connect by)/서브쿼리(Subquery) (0) | 2020.09.05 |
(SQLD)TCL(Transaction Control Language) (0) | 2020.09.01 |
(SQLD)WITH구문/DCL(Data Control Language) (0) | 2020.08.30 |
(SQLD)DECODE와 CASE/ROWNUM과 ROWID (0) | 2020.08.26 |