BEGIN;
~ END;
혹은 BEGIN;
~ COMMIT;
사이에 트랜잭션을 적용하고 싶은 SQL을 사용BEGIN
과 END
/COMMIT
(둘은 같다.) 사이에 여러 SQL은 마치 하나의 명령어처럼 동작한다. 모두 성공하던지 모두 실패하던지 둘 중 하나로만 동작BEGIN
전으로 돌아가고 싶다면 ROLLBACK
을 사용한다.BEGIN;
INSERT INTO ~~~;
UPDATE SET ~~~;
...
END; -- COMMIT;
commit mode에 따라서 BEGIN
의 사용 여부 결정
autocommit
의 값에 의해 결정autocommit=TRUE
BEGIN
을 사용한다.autocommit=FALSE
COMMIT
을 호출할 때까지 커밋되지 않는다.COMMIT
필수!psycopg1
라이브러리 사용)처럼 외부 언어에서 db의 데이터를 수정해야할 때 유용하다.autocommit=TRUE
TRUNCATE
: DELETE
보다 빠르다는 장점이 있지만 WHERE
문과 트랜잭션에 적용하지 못한다.
다시는 필요없는 데이터를 빠르게 삭제하고 싶을 때만 사용한다.
UNION
(합집합), EXCEPT
/MINUS
(차집합), INTERSECT
(교집합)COALESCE()
, NULLIF()
WINDOW_FT OVER ([PARTITION BY field_name][ORDER BY field_name])
ROW_NUMBER
, FIRST_VALUE
, LAST_VALUE
, LAG
, LISTAGG
SUM
, AVG
, MEDIAN
, COUNT
, MAX
, MIN
, NTH_VALUE
JSON_EXTRACT_PATH_NEXT(json, key1, key2, ...)
: 첫 번째 인자에는 json을 두 번째 인자부터는 outer부터 inner순으로 원하는 값을 도출하기 위한 key를 넣어준다.PostgreSQL에서 적용되는 함수와 RedShift에서 적용되는 함수가 조금씩 다른 것 같다. 이 점은 모아서 정리해야할 것 같다. PostgreSQL에서 제공하는 샘플 데이터를 찾았다. 이 데이터를 사용해서 더 다양한 예제를 직접 만들고 비교해봐야지.