등가 조인
EQUI JOIN
EQUI JOIN(등가 조인)은 두 개의 테이블에 겹치는 항목이 있을 경우에 사용하는 조인 방법이다. 종류는 크게 다음과 같이 구분할 수 있다.
NATURAL JOIN
INNER JOIN
샘플 테이블
CREATE TABLE teacher(
teacher_no NUMBER PRIMARY KEY,
teacher_name VARCHAR2(21) NOT NULL,
teacher_subject VARCHAR2(15) NOT NULL
);
CREATE TABLE pupil(
pupil_no NUMBER PRIMARY KEY,
pupil_name VARCHAR2(21) NOT NULL,
teacher_no REFERENCES teacher(teacher_no) ON DELETE CASCADE
);
INSERT INTO teacher VALUES(1, '피카츄', '전기학');
INSERT INTO teacher VALUES(2, '손오공', '에너지학');
INSERT INTO teacher VALUES(3, '홍길동', '전통학');
INSERT INTO pupil VALUES(1, '라이츄', 1);
INSERT INTO pupil VALUES(2, '파이리', 1);
INSERT INTO pupil VALUES(3, '꼬부기', 1);
INSERT INTO pupil VALUES(4, '야무차', 2);
INSERT INTO pupil VALUES(5, '부르마', 2);구조
위에서 생성한 테이블의 구조는 다음과 같다고 볼 수 있다.

파란 부분의 연결선은 실제로 존재하는 것이 아니며, 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