home

조인 심화

외부 조인

  • LEFT OUTER JOIN으로 왼쪽에 있는 테이블의 모든 행을 포함.
  • LEFT나 RIGHT는 데이터에 NULL이 있을 수 있는 테이블을 서버에 알려주는 ㅇ겨할을 한다.
  • 세 개의 외부 조인도 가능하다.

교차 조인

  • CROSS JOIN으로 데카르트 곱처럼 생성 가능
  • 2005-01-01 부터 2006-01-01 까지의 날짜를 생성해줄 수 있다.
  • 밑은 1부터 100까지의 집합을 만들어주는 SQL
    SELECT (a.a * 10) + b.a + 1 AS number
    FROM (
      SELECT 0 a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 
      UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 
      UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
    ) a
    CROSS JOIN (
      SELECT 0 a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 
      UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 
      UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
    ) b
    ORDER BY number;
    

    자연 조인

  • 데이터베이스 서버가 필요한 조인 조건을 결정할 수 있도록 허용하는 조인
  • NATURAL JOIN 으로 사용

조건식

CASE 표현식

  • CASE WHEN THEN ELSE END 로 사용

단순 CASE 표현식

  • CASE category.name WHEN 'Childeren' THEN 'ALL AGES' 로 단순 로직 가능

쓰이는 곳

  • 결과셋 반환, 존재 여부 확인 등에 쓰임
  • 0으로 나누기 오류도 해결 가능
    • 분모가 0이 되면 NULL 값이 뜨기 때문에 CASE WHEN count(amount) = 0 THEN 1 ELSE count(amount) 이런식으로 처리 가능