등가 조인
EQUI JOIN
EQUI JOIN(등가 조인)은 두 개의 테이블에 겹치는 항목이 있을 경우에 사용하는 조인 방법이다. 종류는 크게 다음과 같이 구분할 수 있다.
NATURAL JOIN
INNER JOIN
샘플 테이블
구조
위에서 생성한 테이블의 구조는 다음과 같다고 볼 수 있다.
파란 부분의 연결선은 실제로 존재하는 것이 아니며, pupil
의 teacher_no
값과 teacher
의 teacher_no
를 비교하여 같으면 연결되어 있다고 판단할 수 있는 것다. 따라서 이 내용을 기반으로 테이블을 결합하여 조회할 수 있도록 하는 것이 등가 조인
이다.
조인 없이 테이블 결합
과거에 사용하던 방식이며, 조회할 대상 테이블 두 개를 콤마로 연결하고 조건절을 추가하여 각각의 값이 같은 경우만 조회할 수 있도록 표현하였다.
NATURAL JOIN
다음의 전제조건이 성립할 경우 제한적으로 사용할 수 있는 형태의 조인이다.
반드시 동일한 이름과 타입을 가진 컬럼이 두 테이블에 존재하여야 한다.
NATURAL JOIN은 컬럼을 명시하지 않아도 자동으로 탐색하여 동일한 이름의 컬럼을 대상으로 조인을 하기 때문에 이름과 형태가 서로 같아야 다. 만약 같지 않을 경우 CROSS JOIN이 발생한다.
INNER JOIN
가장 일반적인 형태의 조인이며 조건을 통해 조인 상태를 정하여 조인 조건에 부합하는 데이터만 결합한다.
형식
별칭 사용
조인 시 별칭을 사용하여 구문을 간소화할 수 있다. INNER JOIN을 예로 들면
위의 구문에서 테이블에 별칭을 부여하면 다음과 같이 사용할 수 있다.
해석 순서에 의해 FROM
이 먼저 해석되므로 T와 P라는 별칭을 ON
절에서도 사용할 수 있다.
충돌 해결
테이블 조인을 사용하다 보면 문제가 발생하는 경우가 있다.
위와 같은 오류가 발생하는 경우인데, 원인은 다음과 같다.
teacher
테이블과 pupil
테이블을 INNER JOIN 하게 되면 teacher_no
컬럼이 중복되어 모호하게 되는 현상이 발생한다.
이를 해결하기 위해서는 두 가지 방법이 있다.
컬럼의 이름을 서로 다르게 짓는다
컬럼이 모호하지 않도록 명확하게 지정하여 선택한다.
모호성을 해결한 INNER JOIN 구문
합치면 6개 항목이지만 teacher_no
가 중복이기 때문에 제외하고 5개를 조회하도록 명시하면 모호성을 해결할 수 있다.
Last updated