티스토리 뷰
자연 조인 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 |
=> 조인 조건에 동등연산자(=)만 사용되는 건 아니다!
'배운 것 기록 > DB' 카테고리의 다른 글
[Oracle] 인라인 뷰 / 고급 서브쿼리(단일, 다중) (0) | 2022.07.13 |
---|---|
[Oracle] Inner Join / Outer Join (0) | 2022.07.10 |
[Oracle] ON절을 사용한 기본 JOIN (0) | 2022.07.08 |
[Oracle] SQL Developer (0) | 2022.07.06 |
[Oracle] Oracle DBMS 접속 방법 (0) | 2022.06.23 |
댓글