데이터 이야기/SQL

[데이터분석 - SQL ] #3-1. JOIN / STANDARD JOIN

sssoing-k 2022. 11. 3. 19:18

1. JOIN

각기 다른 두개의 집단이 합해질 때 사용

 

(1) EQUI JOIN

Equal(=) 조건으로 JOIN하는 방식

ex) WHERE A.PROUCT_CODE = B.PRODUCT_CODE :  A테이블과 B테이블의 PROUCT_CODE가 같은 데이터 반환

 

(2) NON EQUI JOIN

Equal(=) 조건이 아닌 다른 조건(BETWEEN, >, >-, <, <=)으로 JOIN하는 방식

ex) WHERE B.REG_DATE BETWEEN A.START_DATE AND A.END_DATE : B테이블의 리뷰기입 일자가 A테이블의 이벤트 시작일과 마감일 사이에 있는 데이터 반환

 

(3) 3개 이상 TABLE JOIN

JOIN 쿼리 확장, 3개 이상의 테이블 JOIN

ex) WHERE A.PROUCT_CODE = B.PRODUCT_CODE AND B.REG_DATE BETWEEN C.START_DATE AND C.END_DATE : 상품 테이블/리뷰테이블/이벤트 테이블 JOIN

 

JOIN 조건에 만족하지 않는 행들도 출력되는 형태
  • LEFT OUTER JOIN : JOIN에 성공한 데이터 + LEFT TABLE 데이터
  • RIGHT OUTER JOIN : JOIN에 성공한 데이터 + RIGHT TABLE 데이터

 

2. STANDARD JOIN

(1) INNER JOIN

조건에 충족하는 데이터만 출력되며 ON이 필요함 - 교집합

ON이나 WHERE절 사용

  • WHERE A.PROUCT_CODE = B.PRODUCT_CODE
  • ON A.PROUCT_CODE = B.PRODUCT_CODE 

 

(2) OUTER JOIN

JOIN 조건에 만족하지 않는 행들도 출력되는 형태
  • LEFT OUTER JOIN : JOIN에 성공한 데이터 + LEFT TABLE 데이터
  • RIGHT OUTER JOIN : JOIN에 성공한 데이터 + RIGHT TABLE 데이터
  • FULL OUTER JOIN : 왼쪽, 오른쪽 테이블의 데이터가 모두 출력되는 방식 *단, 중복값 제거

 

(3) NATURAL JOIN

A 테이블과 B 테이블에서 같은 이름을 가진 칼럼들이 동일한 데이터를 가지고 있을 경우 JOIN

전체 칼럼과 데이터값이 동일할 경우 출력되나,

ORACLE에서는 USING 조건절을 활용하여 같은 이름을 가진 컬럼 중 원하는 컬럼만 이용할 수 있다.

 

 

(4) CROSS JOIN

경우의 수와 같이, JOIN 조건이 없는 경우, 조합할 수 있는 모든 경우를 출력하는 방식