JOIN
- RDB의 핵심 기능
- 조회할 컬럼이 여러 개의 테이블에 분산되어 저장된 경우
테이블 사이의 관계(Relationship)를 이용하여 검색할 때 사용
- 일반 JOIN과 ANSI JOIN 으로 구분
- JOIN이 필요한 이유
: 정규화 과정에서 컬럼들이 분산저장
: 또는 한 테이블에 있을 수 없는 컬럼들이 나눠서 저장되기 때문
- 관계가 맺어졌다 = 외래키로 맺어졌다.
- 참조관계 : 다른 테이블의 기본키를 가져오는 테이블을 자식테이블이라고 함
- 식별자관계(직선) : A테이블의 기본키가 B테이블의 외래키이면서 기본키가 되는 경우
1. Equi-JOIN (= '내부조인')
- 가장 많이 사용되는 형식
- 조인조건에 '=' 연산자를 사용하는 JOIN
- 조인조건의 갯수는 적어도 '사용된 테이블의 갯수(n)-1개'
- 특징 : 서로 일치하지 않는 데이터(행) 무시
- ANSI 형식에서는 INNER JOIN 이라고 함
예1) 사원테이블에서 사원정보를 조회하시오.
(Alias 는 사원번호, 사원명, 부서코드, 부서명)
- 결과
예2) 사원테이블에서 100번 부서의 사원정보를 조회하시오.
Alias 사원번호, 사원명, 부서코드, 부서명
- 결과
예3) 2005년 6월 상품별 매출현황을 조회하시오.
(Alias는 상품코드, 상품명, 판매금액)
- 결과
예4)매입테이블에서 2005년 3월 거래처별 매입현황을 조회하시오.
Alias는 거래처코드, 거래처명, 매입금액합계
- 결과
예5) 2005년 5월 상품별 매입/매출 정보를 조회하시오.
Alias 는 상품코드, 상품명, 매입수량, 매출수량
2. Cartesian Product
- 조인조건이 없는 경우, 조인조건이 잘못 기술된 경우
- 불가피한 경우를 제외하고 활용하지 말 것
- 모든 행들의 조합을 결과로 반환
- 예) A 테이블(100행 20열), B 테이블(2000행 10열)
A,B 테이블의 Cartesian Product 결과
: 행의 갯수 = A행 x B행 = 200000 행
: 열의 갯수 = A열 + B열 = 30 열