Atomic하게 실행되어야 하는 쿼리를 묶어 하나의 작업처럼 처리하는 방법
Ex. 은행 계좌이체 → 인출 + 입금 으로 구성 → 둘 다 성공하든지 둘 다 실패해야 함
BEGIN;
A 계좌에서 인출;
B 계좌로 입금;
END;
레코드 수정/추가/삭제 등에만 의미가 있음
조회는 데이터가 변하지 않아 의미가 없음
BEGIN - END 혹은 BEGIN - COMMIT 사이에 묶을 쿼리들을 작성
ROLLBACK 을 통해서 BEGIN 이전의 상태로 돌릴 수 있음
이는 commit mode에 따라 달라짐
autocommit = TrueBEGIN - END(COMMIT)/ROLLBACK 사용 가능autocommit = FalseCOMMIT 이 호출될 때까지 커밋되지 않음UNION (합집합)UNION ALL : 중복을 제거하지 않음EXCEPT (차집합)INTERSECT (교집합)COALESCECOALESCE(exp1, exp2, exp3, ..., default=NULL)NULLIFNULLIF(exp1, exp2)LISTAGG(column1, [delimiter]) WITHIN GROUP (ORDER BY order_column)
WITHIN GROUP (ORDER BY order_column) 부분을 통해서 순서를 부여하여 리스트 가능WITHIN ?PERCENTILE_CONT : 연속형 데이터 백분위수 계산 → 중앙값 계산시 WITHIN 사용PERCENTILE_DISC : 이산형 데이터 백분위수 계산 → 중앙값 계산시 WITHIN 사용MODE : 최빈값 계산function(expression) OVER ([PARTITION BY expression] [ORDER BY expression])
ROW_NUMBER, FIRST_VALUE, LAST_VALUE, LAGAVG, SUM, COUNT, MAX, MIN, MEDIAN, NTH_VALUELAG(column, n=1) OVER (PARTITION BY partition_column ORDER BY order_column)
JSON_EXTRACT_PATH_TEXTJSON_EXTRACT_PATH_TEXT(json_string, key1, key2, ...)