JOIN

배쨈·2023년 8월 23일
0

SQL

목록 보기
4/9

두 개 이상의 다른 테이블을 한 번에 보여줄때 쓰는 쿼리

  • EQUI JOINNOT EQUI JOIN를 하나의 쿼리에서 사용 할 수 있다.
  • 테이블간 PK와 FK의 연관 관계가 없어도 JOIN이 가능
  • JOIN되는 테이블 간 모두 존재하는 컬럼이 존재 하는 경우, 반드시 테이블명이나 AS를 명시해야 한다.

EQUI JOIN

Equal= 조건으로 JOIN하는 것

  • 다른 테이블에서 공통된 컬럼을 조인, WHERE절 내부에 = 조건 추가
SELECT A.CODE, A.NAME, B.ID, B.REVIEW, B.DATE
FROM PRODUCT A, PRODUCT_REVIEW B
WHERE A.CODE = B.CODE
AND A.CODE = '~~~' ;

NOT EQUI JOIN

BETWEEN > < >= <= 조건을 이용하여 JOIN하는 것

  • ~동안, 일정 범위에 있는 데이터를 조인할 때 사용

INNER JOIN

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

  • ON절에 정의된 조건으로 JOIN의 여부를 결정한다.
SELECT A.CODE, A.NAME, B.ID,B.CONTENT
FROM PRODUCT A INNER JOIN REVIEW B
ON A.CODE = B.CODE ;

OUTER JOIN

JOIN조건을 만족하지 않은 행들도 출력하는 형태
기준이 되는 행은 항상 무조건 모두 출력된다!!!!

  • ON절에 정의된 조건으로 JOIN의 여부를 결정한다.
  • Oracle에서 모든 행이 출력되는 테이블의 반대편에 (+) 기호를 붙여 작성한다.
> LEFT JOIN의 경우
SELECT A.COL1 , B.COL2
FROM SAMPLE1 A, SAMPLE2 B
WHERE A.COL1 = B.COL2(+);
우변에 (+)를 붙인다

> RIGHT JOIN의 경우
SELECT A.COL1, B.COL2
FROM SAMPLE1 A, SAMPLE2 B
WHERE A.COL1(+) = B.COL2;
좌변에 (+)를 붙인다
  • LEFT OUTER JOIN

    왼쪽에 표기된 테이블 데이터는 무조건 출력되는 조인
    JOIN된 데이터가 없는 오른쪽 테이블은 NULL 출력

  • RIGHT OUTER JOIN

    오른쪽에 표기된 테이블 데이터는 무조건 출력되는 조인
    JOIN된 데이터가 없는 왼쪽 테이블은 NULL출력

  • FULL OUTER JOIN

    왼쪽, 오른쪽 데이터가 모두 출력되는 방식
    중복값은 제거 후 출력

NATURAL JOIN

  • 테이블들간, 같은 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을 경우 JOIN 되어 출력
  • MSSQL에서 지원하지 않는다
  • Oracle에서, USING절을 이용하여 같은 이름을 가진 컬럼 중, 원하는 컬럼만 조인 가능
    • 단, SELECT절에서 ALIAS 표기 불가
  • ON절 사용 불가!!

CROSS JOIN(Cartesian Product)

경우의 수 생각하기

  • 조합할 수 있는 모든 경우를 출력하는 방식
  • 별도의 JOIN조건이 없을 경우, 카디션 곱으로 취급
SELECT A_NAME, B_NAME
  FROM B,A ; 

SELECT A_NAME, B_NAME
  FROM B CROSS JOIN A ;
// 같은 결과
profile
빵상빵상

0개의 댓글