[PostgreSQL] 테이블 조인

Date:     Updated:

카테고리:

태그:

인프런에 있는 권철민님의 데이터 분석 SQL Fundamentals 강의를 듣고 정리한 내용입니다.


🐘 테이블 JOIN

level_set

  • Table1과 Table2를 id로 join
  • join column 기준 1:m relation이면 join 결과는 m집합의 레벨 유지 (id=1 행이 두 개)
    • JOIN 여러 번 할 때 중요


INNER JOIN

inner


SELECT 
    A.CUSTOMER_ID,
    A.NAME,
    A.EMAIL,
    B.AMOUNT,
    B.PAYMENT_DATE
FROM 
    CUSTOMER A JOIN PAYMENT B
    ON A.CUSTOMER_ID = B.CUSTOMER_ID;
  • JOIN의 default 값은 INNER JOIN


LEFT(RIGHT) OUTER JOIN

left

  • 겹치지 않아도 살려둬라 (B의 속성은 NULL로)


SELECT
    A.CUSTOMER_ID,
    A.NAME,
    A.EMAIL,
    B.AMOUNT,
    B.PAYMENT_DATE
FROM 
    CUSTOMER A LEFT JOIN PAYMENT B -- or RIGHT JOIN
    ON A.CUSTOMER_ID = B.CUSTOMER_ID;


FULL OUTER JOIN

full

  • 겹치는 것만 포개고 나머지 전부 살려둬라


SELECT
    A.CUSTOMER_ID,
    A.NAME,
    A.EMAIL,
    B.AMOUNT,
    B.PAYMENT_DATE
FROM 
    CUSTOMER A FULL OUTER JOIN PAYMENT B 
    ON A.CUSTOMER_ID = B.CUSTOMER_ID;


SELF JOIN

SELECT
    E.FIRST_NAME || ' ' || E.LAST_NAME EMPLOYEE,
    M.FIRST_NAME || ' ' || M.LAST_NAME MANAGER
FROM
    EMPLOYEE E LEFT JOIN EMPLOYEE M
    ON M.EMPLOYEE_ID = E.MANAGER_ID;
  • 같은 테이블끼리 조인할 때 사용


CROSS JOIN

cross

  • Cartesian Product
SELECT *
FROM color CROSS JOIN size;


맨 위로 이동하기

SQL 카테고리 내 다른 글 보러가기

댓글 남기기