BEGIN; ~ END; 혹은 BEGIN; ~ COMMIT; 사이에 트랜잭션을 적용하고 싶은 SQL을 사용BEGIN과 END/COMMIT(둘은 같다.) 사이에 여러 SQL은 마치 하나의 명령어처럼 동작한다. 모두 성공하던지 모두 실패하던지 둘 중 하나로만 동작BEGIN전으로 돌아가고 싶다면 ROLLBACK을 사용한다.BEGIN;
INSERT INTO ~~~;
UPDATE SET ~~~;
...
END; -- COMMIT;
commit mode에 따라서 BEGIN의 사용 여부 결정
autocommit의 값에 의해 결정autocommit=TRUEBEGIN을 사용한다.autocommit=FALSECOMMIT을 호출할 때까지 커밋되지 않는다.COMMIT 필수!psycopg1 라이브러리 사용)처럼 외부 언어에서 db의 데이터를 수정해야할 때 유용하다.autocommit=TRUETRUNCATE
: 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, LISTAGGSUM, AVG, MEDIAN, COUNT, MAX, MIN, NTH_VALUEJSON_EXTRACT_PATH_NEXT(json, key1, key2, ...) : 첫 번째 인자에는 json을 두 번째 인자부터는 outer부터 inner순으로 원하는 값을 도출하기 위한 key를 넣어준다.PostgreSQL에서 적용되는 함수와 RedShift에서 적용되는 함수가 조금씩 다른 것 같다. 이 점은 모아서 정리해야할 것 같다. PostgreSQL에서 제공하는 샘플 데이터를 찾았다. 이 데이터를 사용해서 더 다양한 예제를 직접 만들고 비교해봐야지.