다른 테이블과 매칭되는 열들이 있는 테이블로부터 열을 추출하고 싶을 때 INNER JOIN
을 사용할 수 있다. 즉, JOIN은 여러 테이블의 관련 있는 데이터를 하나로 결합해 조회하는 SQL 구문이다.
SELECT
column_list
FROM
X
INNER JOIN Y ON X.id = Y.id;
ON
키워드 뒤에 join 조건을 정의한다. 여기서 join 조건이란 두 테이블을 결합하는데 필요한 조건들을 말한다.FROM
절을 평가하고, 그리고 INNER JOIN
, 마지막으로 SELECT
절을 평가한다.INNER JOIN
이 X와 Y 테이블 모두에 존재하는 id
컬럼의 값을 비교한다.SELECT
절이 명시된 값(column_list
)을 반환한다.자 그러면 어떻게 Oracle에서 INNER JOIN이 성립되는지 알아보자.
여기 두 개의 테이블 X
와 Y
가 있다. INNER JOIN
을 사용해서 두 테이블에 있는 row들을 합칠려고 한다.
id
(키), x
를 가진다.id
(키), y
를 가진다.INNER JOIN을 통해 id
컬럼에서 매칭되는 값들을 가지는 두 개의 테이블로부터 rows(행들)을 포함할 수 있다. 다만, 매칭되지 않는 열들은 결과에 포함시키지 않는다.
이렇게 INNER JOIN을 벤 다이어그램으로 표현하면 마치 두 집합의 교집합을 찾는 것과 같다.
SELECT *
FROM orders INNER JOIN order_items
ON order_items.order_id = orders.order_id
ORDER BY order_date DESC;
SELECT
*
FROM
X
INNER JOIN Y USING (c1, c2, ...);
위에서 본 ON
절과 마찬가지로, 테이블을 합칠 때 어떤 칼럼이 같은 지를 표시하기 위해 USING
절을 활용할 수 있다.
SELECT
*
FROM
orders
INNER JOIN order_items USING( order_id )
ORDER BY
order_date DESC;