SQL JOIN 기본 개념 이해의 출발

RDBMS에서 테이블 간 데이터를 연결해서 쓰는 경우가 매우 많기 때문에 JOIN 구문은 필수로 알고 있어야 한다.

이 글은 JOIN의 사용 방법을 소개하진 않고 JOIN을 사용하지 않고도 테이블을 결합할 수는 있다는 점을 짚고 넘어가기 위해 쓴다.

테이블 조인이라는 게 간단한 건 이해 없이도 쓸 수 있긴 하지만 복잡해 질수록 머리가 아파진다. 때문에 테이블 결합에 대한 기본 개념을 먼저 이해하는 게 좋을 거라고 생각한다.

1. 대표적인 테이블 JOIN

아무래도 가장 흔한 테이블 JOIN 형태는 외래 키로 연결된 두 개의 테이블에서 각각 필요한 컬럼을 조회하는 패턴이다.

예시)

Departments 테이블과 Employees 테이블은 department_id 라는 키로 연결되어 있다.

예시 테이블2
예시 테이블

Employees 테이블에 있는 name 컬럼과 department 테이블에 있는 department_name 컬럼을 같이 조회하고 싶으면 JOIN을 쓴다.

SELECT e.name, d.department_name FROM Departments d 
JOIN Employees e
ON d.department_id = e.department_id
;
join 예시

2. 다중 테이블 조회로도 JOIN은 가능하다

오해하면 안 되는 게 JOIN은 처음부터 있었던 구문이 아니라 필요에 따라 개발된 구문이다.

위의 결과는 JOIN 없이도 쿼리할 수 있다.

예시)

SELECT e.name, d.department_name FROM Departments d, Employees e
WHERE d.department_id = e.department_id
;
where 절로 테이블 결합

FROM 절에 연결하려는 테이블을 두 개 넣고 WHERE 절에 JOIN ON 뒤로 오는 조건과 마찬가지로 외래키가 일치하는 조건을 넣어주면 된다.

departments랑 employees 테이블을 합치고 각 테이블의 department_id가 같은 컬럼만 출력한다는 의미는 똑같다.

두 쿼리는 실제로 처리되는 로직도 같아서 성능과 결과 모두 전혀 다를 게 없다.

3. 그럼에도 JOIN을 많이 쓰는 이유

그럼에도 일반적으로 JOIN 구문을 더 많이 쓴다. 쿼리가 복잡해 질수록 가독성이 더 좋고 JOIN을 지원하지 않는 RDBMS는 없기 때문에 쓰지 않을 이유가 없다.

사실 그냥 JOIN만 알아도 테이블 연결 쿼리 사용에는 문제가 없지만 테이블 연결을 무작정 JOIN으로 외워서하는 것보다는 연결되는 조건에 따라 어떤 결과가 나오는지를 이해하는 게 더 중요한 거 같다.

댓글 남기기