본문 바로가기
Study/DB

[DataBase] JOIN 종류 알아보기

by YoungD 2023. 8. 29.

join 이란?  :  2 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것

                        필요한 데이터를 한 번에 가져올 수 있다.

 

 

SELECT 테이블1.컬럼명,  테이블2. 컬럼명
FROM TABLE1,  TABLE2
WHERE TABLE1.COLUMN1 = TABLE2.COLUMN2 ;

 

 

JOIN 종류 알아보기

 

 

1. 동등조인(Equi-Join) : 두 개 이상의 테이블 간에 조인 조건으로 동등 연산자('=')를 사용하여 컬럼값이 서로 일치하는 경우에만 결합하는 조인. 주로 두 테이블 사이에 공통 열(키)이 있는 경우에 사용된다. 이 공통 열을 기반으로 두 테이블의 데이터를 결합하여 하나의 결과 집합을 생성

 

 

  • INNER JOIN

- JOIN 조건에 충족하는 데이터만 출력되는 방식

- USING이나 ON절 필수적으로 사용

- 중복 테이블의 경우 별개의 컬럼으로 표시

 

SELECT 주문.주문ID, 고객.고객이름
FROM 주문
INNER JOIN 고객 ON 주문.고객ID = 고객.고객ID;

"주문" 테이블과 "고객" 테이블을 "고객ID"열을 기준으로 INNER JOIN하는 쿼리문

주문ID와 고객 이름이 포함된 결과 집합이 반환된다. (두 테이블 간에 일치하는 행만을 반환)

 

 

 

  • NATURAL JOIN

- INNER JOIN의 하위

- 두 테이블간 동일한 이름을 갖는 컬럼들이 모두 동일한 데이터를 가지고 있을 경우 JOIN (MYSQL 지원x)

- USING, ON, WHERE 절에서  X

- JOIN 컬럼에 ALIAS 나 테이블명과 같은  접두사 X

- 별도의 JOIN 조건 지정 X

 

SELECT *
FROM EMPLOYEES
NATURAL JOIN DEPARTMENTS;

"EMPLOYEES" 테이블과 "DEPARTMENTS" 테이블 모두 "DEPARTMENT_ID" 열을 가지고 있다고 가정하여  NATURAL JOIN하는 쿼리문

두 테이블에서 동일한 "DEPARTMENT_ID" 열을 가진 행들을 기반으로 조인된 결과 집합이 반환

 

 

 

  • LEFT OUTER JOIN

- JOIN 조건에 충족하는 데이터가 아니어도 출력

- (+)가 붙지 않은 쪽으로 JOIN, JOIN되는 데이터가 없으면 오른쪽 테이블의 컬럼값이 NULL로 출력

- USING이나 ON 조건절 반드시 사용

- 좌측이 기준

 

SELECT 직원.*, 부서.부서명
FROM 직원
LEFT OUTER JOIN 부서 ON 직원.부서ID = 부서.부서ID;

"직원"테이블과 "부서"테이블을 "부서ID"열을 기준으로 LEFT OUTER JOIN 하는 쿼리문

모든 직원의 정보와 그들이 속한 부서의 정보가 포함된 결과 집합이 반환, 어떤 직원이 부서에 속하지 않는 경우에도 해당 직원은 결과에 포함되며 그 부서 정보는 NULL로 표시된다.

 

 

 

  • RIGHT OUTER JOIN

- JOIN 조건에 충족하는 데이터가 아니어도 출력

- (+)가 붙지 않은 쪽으로 JOIN, JOIN되는 데이터가 없으면 왼쪽 테이블의 컬럼값이 NULL로 출력

- USING이나 ON 조건절 반드시 사용

- 우측이 기준

 

 

 

  • FULL OUTER JOIN ( = full join )

- 모든 데이터를 JOIN하여 반환

- 중복 데이터는 삭제

 

 

 

 

2. 비동등조인(Non-Equi Join) : 비동등 연산자( '>', '<', '>=', '<=', '!=')를 사용하여 두 테이블 간의 조인 조건을 정의하는 조인 유형. 두 테이블의 열 값이 특정 조건을 충족하는 경우에 사용된다.

 

 

  • CROSS JOIN

- 테이블 사이 JOIN 조건이 없는 경우

- 양쪽 집합 M*N건의 데이터 조합 발생

 

 

 


 

USING 조건절 : 동일한 이름을 가진 컬럼중 원하는 컬럼에 대해서만 선택적으로 EQUI JOIN(동등 조인)

                        USING절로 정의된 컬럼 앞에 ALIAS 나 테이블 이름과 같은  접두사 X

 

 

ON 조건절 : WHERE 조건절을 분리하여 컬럼명이 다르더라도 JOIN 조건을 사용할 수 있는 장점

                    ALIAS나 테이블명 반드시 사용

 

 


join 한 눈에 보기 !