SQLD 조인
조인
두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것
표준 조인에는 INNER JOIN, OUTER JOIN, NATURAL JOIN, CROSS JOIN 이 있으며 표준 조건 조인절인 ON, USING을 통해 테이블 간의 JOIN 조건을 FROM절(WHERE절 아님) 에서 명시적으로 정의할 수 있다.
INNER JOIN
JOIN 조건에서 동일한 값이 있는 행만 반환한다
INNER JOIN 표시는 JOIN 조건을 FROM 절에서 정의하겠다는 표시이므로 USING 조건절이나 ON 조건절을 필수적으로 사용해야 하며, INNER는 SQL문 내에서 생략 가능하다.
OUTER JOIN
INNER(내부) JOIN과 대비하여 외부 JOIN이라고 불린다.
JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용할 수 있다.
OUTER JOIN 또한 JOIN 조건을 FROM 절에서 정의하겠다는 표시이므로 USING 조건절이나 ON 조건절을 필수적으로 사용해야 한다.
1) LEFT OUTER JOIN
조인 수행시 먼저 표기된 좌측 테이블에 해당하는 데이터를 먼저 읽은 후, 나중 표기된 우측 테이블에서 JOIN 대상 데이터를 읽어 온다.
2) RIGHT OUTER JOIN
조인 수행시 먼저 표기된 우측 테이블에 해당하는 데이터를 먼저 읽은 후, 나중 표기된 좌측 테이블에서 JOIN 대상 데이터를 읽어 온다.
3) FULL OUTER JOIN
조인 수행시 좌측, 우측 테이블의 모든 데이터를 읽어 JOIN하여 결과를 생성한다.
NAURAL JOIN
서로 다른 테이블에서 동일한 이름을 갖는 컬럼에 대해 자동으로 동등조인(=) 한다
NATURAL JOIN이 명시되면, 추가로 USING 조건절, ON 조건절, WHERE 절에서 JOIN 조건을 정의할 수 없다.
JOIN에 사용된 칼럼들은 같은 데이터 유형이어야 하며, ALIAS나 테이블 명과 같은 접두사를 붙일 수 없다
JOIN이 되는 테이블의 데이터 성격(도메인)과 칼럼명 등이 동일해야 하는 제약 조건이 있다.
NATURAL JOIN에서 사용된 열은 식별자를 가질 수 없기 때문에 EMP, DEPTNO 같이 OWNER명을 사용하면 에러가 발생한다.
NATURAL JOIN에서 조건절은 ON 키워드를 사용한다.
식별자란 데이터베이스의 테이블에서 각 레코드를 고유하게 식별할 수 있는 열 또는 열의 조합을 의미한다. 흔히 기본 키(Primary Key)가 이에 해당하며, 각 레코드를 유일하게 식별할 수 있어야 합니다. 예를 들어, 학생 데이터베이스에서 각 학생을 구분하기 위해 학번(Student ID)을 사용하는 것이 대표적인 식별자 예
CROSS JOIN
테이블 간 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 출력한다.
CARTESIAN PRODUCT와 같은 의미이다.
USING 조건절
FROM 절의 USING 조건절을 이용하면 같은 이름을 가진 칼럼들 중에서 원하는 칼럼에 대해서만 선택적으로 EQUI JOIN을 할 수가 있다.
JOIN + USING 조건절 또한 NATURAL JOIN과 마찬가지로 JOIN 칼럼에 대해서는 ALIAS나 테이블 이름과 같은 접두사를 붙일 수 없다.
ON 조건절
JOIN 서술부(ON 조건절)와 비 JOIN 서술부(WHERE 조건절)를 분리하여 이해가 쉽고, 칼럼명이 다르더라도 JOIN 조건을 사용할 수 있는 장점이 있다
임의의 JOIN 조건 지정, 이름이 다른 칼럼명을 JOIN 조건으로 사용, JOIN 칼럼을 명시하기 위해 사용한다
JOIN+USING조건절과 달리, ON 조건절을 사용한 JOIN의 경우는 ALIAS나 테이블 명과 같은 접두사를 사용하여 SELECT에 사용되는 칼럼을 논리적으로 명확하게 지정해줘야 한다.