JOIN
정의\
관계형 데이터베이스의 테이블 안에 있는 행들을 논리에 따라 연결할 수 있도록 하는 기법이다. 데이터베이스에 저장된 데이터들은 테이블에 흩어져 저장되어 있으므로, 사용자가 원하는 형태로 데이터를 조작하려면 특별한 방법이 필요하다. 이때 사용자가 원하는 데이터를 서로 연결하여 조작하는 기법이 조인이다.
JOIN의 필요성
- 관계형 데이터베이스의 구조적 특징으로 정규화를 수행하면 의미 있는 데이터의 집합으로 테이블이 구성되고 각 테이블끼리는 관계(Relationship)을 갖게 된다.
- 이와 같은 특징으로 관계형 데이터베이스는 저장 공간의 효율성과 확장성이 향상되게 된다.
- 다른 한편으로는 서로 관계있는 데이터가 여러 테이블로 나뉘어 저장되므로 각 테이블에 저장된 데이터를 효과적으로 검색하기 위해 조인이 필요하다.
INNER JOIN
- 여러 애플리케이션에서 사용되는 가장 흔한 결합 방식이며 기본 조인 형식으로 간주된다.
- 내부 조인은 조인 구문에 기반한 2개의 테이블(A, B)의 컬럼 값을 결합함으로써 새로운 결과 테이블을 생성한다.
- 명시적 조인 표현(explicit)과 암시적 조인 표현(implicit) 2개의 다른 조인식 구문이 있다.
Explicit Inner Join
테이블에 조인을 하나는 것을 지정하기 위해 JOIN 키워드를 사용하며 그리고 ON 키워드를 조인에 대한 구문을 지정하는데 사용한다.
Implicit Inner Join
SELECT 구문의 FROM 절에서 그것들을 분리하는 컴마를 사용해서 단순히 조인을 위한 여러 테이블을 나열하기만 한다.
Equal JOIN
- 비교자 기반의 조인이며, 조인 구문에서 동등비교만을 사용한다.
- 다른 비교 연산자(<와 같은)를 사용하는 것은 동증 조인으로서의 조인의 자격을 박탈하는 것이다.
Natural JOIN
- 동등 조인의 한 유형으로 조인 구문이 조인된 테이블에서 동일한 컬럼명을 가진 2개의 테이블에서 모든 컬럼들을 비교함으로써 암시적으로 일어나는 구문이다.
- 결과적으로 나온 조인된 테이블은 동일한 이름을 가진 컬럼의 각 쌍에 대한 단 하나의 컬럼만 포함하고 있다.
CROSS JOIN
- 조인되는 두 테이블에서 곱집합을 반환한다.
- 즉, 두 번째 테이블로부터 각 행과 첫 번째 테이블에서 각 행이 한번씩 결합된 열을 만들 것이다.
- 예를 들어 m행을 가진 테이블과 n행을 가진 테이블이 교차 조인되면 m x n 개의 행을 생성한다.
OUTER JOIN
정의\
여러테이블에서 한 쪽에는 데이터가 있고, 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 모두 출력하는 것입니다. 즉, 조건에 맞지 않아도 해당하는 행을 출력하고 싶을 때 사용할 수 있습니다.
LEFT OUTER JOIN
- 우측 테이블에 조인할 컬럼의 값이 없는 경우 사용한다.
- 즉, 좌측 테이블의 모든 데이터를 포함하는 결과 집합을 생성한다.
RIGHT OUTER JOIN
- 좌측 테이블에 조인할 컬럼의 값이 없는 경우 사용한다.
- 즉, 우측 테이블의 모든 데이터를 포함하는 결과 집합을 생성한다.
FULL OUTER JOIN
- 양쪽 테이블 모두 OUTER JOIN이 필요할 때 사용한다.
SELF JOIN
정의\
테이블을 자기 자신과 조인시키는 것입니다.
self join의 사용 상황
- 위계성 데이터를 다룰 때
- 순차성 데이터 다룰 때
- 1개의 테이블 안에 관계성이 명시되어야 할 데이터가 여러 개 존재할 때