상세 컨텐츠

본문 제목

[SQL] JOIN 정리

☆ 추가 학습 필요

by ollive 2024. 7. 3. 12:21

본문

JOIN

JOIN이란 두 개 이상의 테이블을 연결 또는 결합하는 기능이다. 2개의 테이블끼리 JOIN이 가능하다. 실무에서 사용 시, 모든 테이블을 JOIN한다면 시스템의 부하가 커지는 단점이 있으므로 역 정규화 또한 같이 진행하여 최적이 테이블을 만드는 것이 중요하다. 

 

조인은 등가조인과 비등가 조인, 표준조인을 구분할 수 있다. 

 

등가 조인

먼저, 등가조인은 두 테이블의 같은 칼럼을 기준으로 두 데이터를 하나로 합치는 JOIN이다. 

SELECT *
FROM food_orders fo, payments p #합칠 테이블
WHERE fo.order_id =p.order_id;  #같은 칼럼

SELECT *
from food_orders fo join payments p on fo.order_id =p.order_id ;

비등가 조인

비등가 조인은 등가 조인과 형식은 같지만 WHERE에서 = 연산자를 사용하지 않는다. 설계상의 이유로 비등가 조인을 수행하지 못하는 경우도 있다. 멤버십 등급구분테이블과 고객의 포인트 테이블을 조인한다면 BEWEEN 연산자를, 부서명 테이블과 부서별 직원테이블을 조인하여 그 수를 구하고 싶다면, LIKE 연산자를 넣는 등 WHERE절에 조건을 걸어서 결과 값을 얻을 수 있다.

SELECT *
FROM customers c,payments p
where #where에 = 이 아닌 between, like, < 등을 사용함;

 

+ 3개 이상 테이블 조인

3개 이상의 테이블을 조인할 때는 FROM에 모든 테이블을 적고, 앞에서 부터 2개 테이블씩 WHERE에 조인 칼럼을 AND로 연결시키며 적어주면 된다. 

 

표준 조인

표준조인은 일반집합연산자(UNION, INTERSECTION, DIFFERENCE, PRODUCT)와 순수관계 연산자(SELECT, PROJECT, (NATURAL)JOIN, DIVIDE)로 나뉜다. 

 

그외 조인

현재 주로 사용하고 있는 JOIN 조건은 위와 다른 방식으로 작성되고 있다. FROM 에 조인조건을 명시하는 것인데 그 종류에는 INNER JOIN, NATURAL JOIN, USING조건절, ON 조건절, CROSS JOIN, OUTER JOIN이 있다.

 

 

(INNER) JOIN : 공통 컬럼 (키값) 을 기준으로, 두 테이블 모두에 있는 값만 조회합니다. '교집합'이라고 이해가능하다. 반드시 USING 조건절이나 ON 조건절을 사용해야 한다.

 

NATURAL JOIN: 동일한 이름, 동일한 데이터유형의 칼럼들에 대해 자동으로 등가조인을 수행한다. 기준 칼럼에 ALIAS 를 붙일 수 없다.

 

USING조건절: NATURAL JOIN의 기준 칼럼들 중 원하는 칼럼만 선택적으로 수행 할 수 있다. 이는 INNER JOIN의 ON을 사용하는 것과 같다. 조인 칼럼이 아닐때에만 ALIAS를 붙일 수 있다.

 

ON 조건절: 칼럼명이 다르더라도 JOIN 조건을 사용할 수 있다. 검색 조건을 추가할 수 있으나 WHERE을 사용하여 조건을 추가하는 것을 권장한다. 3개이상의 테이블 JOIN의 경우, FROM 테이블1 JOIN 테이블 2 ON 조건절 후에 JOIN 테이블명 ON 조건절 식으로 2개의 테이블씩 JOIN해주면 된다.

 

 OUTER JOIN: OUTER 테이블(기준=드라이빙테이블)은 모두 출력되고 INNER 테이블은 매칭되는 데이터만 출력한다. 동일한 값이 없는 데이터도 반환한다. 

 



'☆ 추가 학습 필요' 카테고리의 다른 글

[TIL] WEEK 4 MON - CROSS JOIN, 같은 테이블 JOIN  (0) 2024.07.15
[TIL] week 2 wed - having  (0) 2024.07.03

관련글 더보기