티스토리 뷰

자연 조인 Natural join

- 조인을 하고자 하는 양 테이블에 컬럼명과 데이터타입이 같은 컬럼을 기준으로 조인을 한다.

-- ON JOIN 활용
SELECT d.department_id, d.department_name, l.city
  FROM departments d JOIN locations l
    ON d.location_id = l.location_id;

-- NATURAL JOIN 활용
SELECT d.department_id, d.department_name, l.city
  FROM departments d NATURAL JOIN lacations l;

기본 조인만 알아도 되지만, 다른 걸 쓰면 더 짧고 간편하게 쿼리문 작성이 가능하다.

 

자연 조인과 기본 조인의 결과

데이터타입이 같고 공통된 컬럼명의 컬럼이 각 테이블에서 두 개 이상일 경우,

두 컬럼의 조합값으로 조인을 시켜
ON JOIN의 경우와 데이터가 다르게 나올 수 있으니 주의해야한다!

 

=> 이럴 땐 1. 기본 조인을 사용하거나 2. USING 절을 사용해야한다!

 

 

USING

USING절을 사용해야할 때

1. 컬럼명이 같고 데이터 타입이 다른 경우

2. 컬럼명이 같고 데이터 타입이 같은 컬럼이 많은데 하나만 콕 집어 사용하고자 하는 경우

USING (양쪽 테이블에 다 있는 컬럼명=조인에 기준이 되는 컬럼명)

 

** USING 절이 참조하고 있는 컬럼은 쿼리문 내 어디에도 alias를 붙이면 안 된다!

SELECT l.city, d.department_name
  FROM locations l JOIN departments d
 USING (location_id)
 -- WHERE d.location_id = 100;	오류!
 WHERE location_id = 100;

 

조인 유형 비교

  Natural Join Using Join On Join
컬럼명 같아야함 같아야함 상관없음
데이터타입 같아야함 상관없음 상관없음
[ 문법 ]
Natural Join FROM departments NATURAL JOIN locations
Using Join FROM departments JOIN locations
USING (location_id)
On Join FROM departments JOIN locations
ON departments.lcation_id = locations.location_id

 

JOIN을 크게 나눈다면

equi join과 non-equi join으로 나눌 수 있다.

 

equi join non-equi join
조인 조건에
동등연산자(=)가 사용된 조인 유형
조인 조건에
그 외 비교연산자를 사용한 조인 유형
natural join
using join
on(=) join
on(=d이 아닌 비교연산자) join

=> 조인 조건에 동등연산자(=)만 사용되는 건 아니다!

 

non-equi join

 

댓글
최근에 올라온 글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함