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