조인
- 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 테이블로 표현하는 컷
- 테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만듬
1) 조인의 필요성
- 관계형 데이터베이스는 정규화 과정을 거치며 데이터가 여러 개의 테이블로 나뉘어 저장
- 각 테이블에 저장된 데이터를 효과적으로 검색하기 위해 필요
2) 내부 조인(Inner Join)
- 가장 흔히 사용되는 결합방식
- 기본 조인 형식
- 조인 구문에 기반한 2개의 테이블의 컬럼 값을 결합함으로써, 새로운 테이블 생성
- 조인 조건에 동일한 값이 있는 행만을 반환(교집합)
- 외부 조인처럼 동일한 컬럼 값이 없는 레코드에 대해 NULL 값을 가지지 않음
(1) 동등 조인(EQUI JOIN)
- 비교 연산 기반의 조인
- 조인 구문에서 동등 비교만을 사용
- 양쪽 테이블에서 조인 조건이 일치하는 레코드만을 결과값으로 반환하는 가장 일반적인 조인
(2) 자연 조인(NATURAL JOIN)
- 동등 조인의 한 유형
- 암시적으로 일어나며, 결과 테이블에 대해 동일한 이름을 가진 컬럼의 각 쌍에 대해 단 하나의 컬럼만 포함
(3) 교차 조인(CROSS JOIN)
- 두 테이블의 곱집합 반환
- m행의 테이블과 n 행의 테이블의 결과값으로 m*n행의 테이블을 반환
3) 외부 조인(OUTER JOIN)
- 조인 대상 테이블에서 특정 테이블의 데이터가 모두 필요한 상황에서 사용
- 두 테이블에 대한 합집합을 반환
- 동일한 컬럼 값이 존재하지 않는 레코드에 대해 NULL 값으로 대체해서 표현
(1) LEFT OUTER JOIN
- 좌측 테이블의 모든 데이터를 포함하는 결과 집합 생성
(2) RIGHT OUTER JOIN
- 우측 테이블의 모든 데이터를 포함하는 결과 집합 생성
(3) FULL OUTER JOIN
- 양쪽 테이블 모두 OUTER JOIN이 필요한 경우
- MY SQL에서는 FULL OUTER JOIN을 지원하지 않으며, 필요한 경우 UNION 연산자를 사용
4) 셀프 조인(SELF JOIN)
- 하나의 테이블에서 자기 자신과 조인
조인을 사용할 때 주의사항
1) SQL 문장의 의미 파악
- SQL문을 어떻게 작성하느냐에 따라 성능이 좌우
- 어떤 질의를 수행할 것인지 명확하게 정의 후, 최적의 SQL문 수행
2) 명확한 조인 조건 제공
- 조인 조건이 명확하지 않을 경우, 의도치 않게 CROSS JOIN(Catersian Product)가 수행될 수 있음
조인을 사용할 때 고려사항
1) 조인할 대상의 집합 최소화
- 집합을 최소할 방법이 있다면 조건을 먼저 적용해 집합을 최소화 후, 조인 수행
2) 인덱스
- 인덱스를 활용하면 조인 연산의 비용을 주일 수 있음
'CS > Database' 카테고리의 다른 글
[데이터베이스] 트리거(Trigger) (0) | 2020.06.24 |
---|---|
[데이터베이스] 뷰(View) (0) | 2020.06.24 |
[데이터베이스] 트랜잭션(Transaction) (0) | 2020.06.22 |
[데이터베이스] 정규화(Normalization) (0) | 2020.06.22 |
[데이터베이스] 관계형 데이터베이스 (0) | 2020.06.22 |
댓글