basics

SQL 기본

SQL 종류

  • DML: table 안의 데이터를 조작
    • SELECT (oracle에선 FROM이 필수)
    • WHERE 절에 집계 함수 사용 불가
  • DDL: table을 정의
  • DCL: 권한을 제어 (GRANT, REVOKE)
  • TCL: 트랜잭션을 제어 (COMMIT, ROLLBACK)

Null

  • null과 사칙 연산하면 결과는 null
    • 집계 함수에선 null은 제외됨
  • null과 비교 연산하면 결과는 falce
  • oracle에선 빈문자열을 null로 취급
  • 정렬
    • sql server: null은 가장 작은 값
    • oracle: null이 가작 큰 값
  • 관련 함수
    • NVL/ISNULL (A, B): A가 null이면 B를 리턴
    • NULLIF(A, B): A, B가 같으면 null을 리턴, 아니면 A를 리턴
    • COALESCE(A, ...): 가장 앞에 있는 null이 아닌 인자를 리턴
  • 집계 함수에서 모든 행이 null이거나 적용할 행의 수가 0일 때, null을 리턴

날짜

  • 1이 하루를 뜻함
  • ex)
    • 1시간 = 1 / 24
    • 10분 = 1 / 24 / (60 / 10)

Case 문

  • CASE 칼럼 WHEN 값 THEN 문장 ELSE 문장 END
    • switch 같은 느낌
  • CASE WHEN 조건문 THEN 문장 ELSE 문장 END
    • elif 같은 느낌

SQL 실행 순서

FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY

Join

  • 특징
    • DBMS는 무조건 2개의 relaction 씩 묶어서 조인
    • non equi join은 성능이 아주 안 좋음
      • 설계 상의 이유로 불가능한 경우도 있다.
  • 종류
    • Inner join: 조건문이 맞는 행만 반환
    • outer join: 조건문이 맞지 않는 행은 null로 채움
    • cross join: cartesian product
  • using 문
    • column 이름을 기준으로 join을 해라
    • ex)
      • on A.id = B.id
      • using id