본문 바로가기
CS/Database

[데이터베이스] 조인(Join)

by 테리는당근을좋아해 2020. 6. 24.

조인

- 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 테이블로 표현하는 컷

- 테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만듬

 

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) 인덱스

- 인덱스를 활용하면 조인 연산의 비용을 주일 수 있음

 

 

댓글