조인이란
조인(join)은 여러 테이블을 합쳐 원하는 데이터를 얻는 작업을 뜻한다.
테이블을 하나로 합치려면 각 테이블에서 공통된 열을 이용한다.
원하는 결과 데이터를 얻으려면 어떤 조인 연산을 수행할지 조건을 무엇으로 할지를 고민해야 한다.
조인은 결과에 포함되는 테이블의 범주에 따라 크게 내부 조인, 외부 조인으로 구분한다.
조인의 종류를 다이어그램으로 표현하면 다음과 같다.
SQL에서 조인 연산을 할 때 다음과 같은 다양한 연산자를 함께 사용할 수 있다.
•
ON
조인 연산에 대한 조건절을 작성할 때 사용하는 연산자로 각 테이블에서 어떠한 속성을 사용해 연산을 수행할지 나타낸다.
•
USING
조인 연산을 하려는 테이블에서 속성명이 동일할 때 USING 연산자 뒤에 공통되는 속성명만 작성해 조건을 간단하게 적을 수 있다.
•
WHERE
테이블에서 원하는 데이터를 조회하기 위한 조건절을 작성할 때 사용하는 연산자다.
조건절에 비교 연산자, IN 연산자, BETWEEN 연산자 등을 사용해 원하는 데이터를 얻을 수 있다.
•
IN
WHERE 절과 함께 사용하며 IN 연산자 뒤에 나오는 조건에 하나라도 해당하는 값을 검색할 수 있다.
•
BETWEEN
특정 범위에 속하는 데이터를 조회할 때 사용하는 연산자다.
>, < 처럼 값을 비교하는데 사용한다.
•
LIKE
특정 데이터를 조회할 때 사용하는 연산자로 % 또는 _ 와 함께 사용한다.
%는 길이를 알 수 없는 문자를, _는 문자 하나를 의미하며 특정 길이의 문자를 검색할 때 사용한다.
내부 조인
내부 조인(INNER JOIN)은 2개 이상의 테이블에서 공통 속성을 가진 데이터를 검색하기 위한 연산이다.
결과는 두 테이블에서 공통 속성이 동일한 튜플만 모아서 조회한다.
따라서 공통 속성이 존재하지 않는 튜플은 조회되지 않는다.
명시적 표현과 암시적 표현
•
명시적 조인 표현
JOIN 연산자 뒤에 조인할 테이블을 명시적으로 표현하는 방법이다.
•
암시적 조인 표현
JOIN 연산자를 명시하지 않고 FROM 절 뒤에 조인할 테이블만 나열하는 방법이다.
외부 조인
외부 조인(OUTER JOIN)이란 테이블에서 조인 조건에 해당하는 속성 값이 없는 데이터까지 모두 조회하는 연산이다.
이때 존재하지 않는 데이터에 대해서는 NULL로 표기한다.
외부 조인에는 다음과 같은 종류가 있다.
•
LEFT OUTER JOIN
연산자 왼쪽 테이블의 모든 데이터를 결과 테이블에 조회한다.
조건을 만족하는 튜플이 왼쪽 테이블에만 있고 오른쪽 테이블에는 존재하지 않아도 결과 테이블에 조회한다.
•
RIGHT OUTER JOIN
연산자 오른쪽 테이블의 모든 데이터를 결과 테이블에 조회한다.
조건을 만족하는 튜플이 오른쪽 테이블에만 있고 왼쪽 테이블에는 존재하지 않아도 결과 테이블에 조회한다.
•
FULL OUTER JOIN
양쪽 테이블에서 조건을 만족하지 않는 데이터가 있더라도 모두 포함해 결과 테이블에 조회한다.
교차 조인
교차 조인(CROSS JOIN)은 카테시안 곱(cartesian product)이라고도 하며 각 테이블의 행과 다른 테이블의 모든 행을 결합해 결과 테이블을 생성한다.
조인에 대한 조건이 없어서 모든 행이 결합된다고 보면 된다.
예를 들어, m개 행을 가진 테이블과 n개 행을 가진 테이블에 교차 조인을 수행하면 m * n 개 행을 가진 결과 테이블이 만들어진다.
셀프 조인
셀프 조인(SELF JOIN)은 한 테이블이 자기 자신과 조인 연산을 수행하는 것이다.
SQL 문에서 셀프 조인을 하려면 FROM 절에 같은 테이블을 2번 적어야 한다.
이때 테이블을 구분하기 위해 별칭을 사용한다.