데브코스 25일차 - SQL/트랜잭션과 유용한 기능들

Pori·2023년 11월 20일
0

데엔

목록 보기
20/47

트랜잭션

: 동시성을 만족하게 실행되어야 하는 SQL을 묶어서 하나의 작업으로 처리하는 방법

ex) 은행 계좌 이체 : 인출과 입금의 두 과정이 동시에 이루어져야한다. → 이런 과정을 트랜잭션으로 묶어야한다.

BEGIN;
	인출
	입금
END;

END == COMMIT, 시작전 상태로 돌아가고 싶으면 rollback을 사용한다.

  • autocommit
    : 모든 수정/삭제/추가 작업이 기본적으로 DB에 바로 쓰여진다.

참고) DELETE FROM VS TRUNCATE

: DELETE FROM은 WHERE을 사용해서 특정 레코드만 삭제가 가능하다. 그러나 TRUNCATE은 테이블에서 모든 레코드를 삭제한다. 또한 트랜잭션에서는 DELETE FROM만 사용 가능하다.

유용한 SQL 문법들

  • UNITON : 여러개의 테이블이나 SELECT 결과를 하나로 합침, UNION ALL은 중복을 제거하지 않음.
  • EXCEPT : SELECT결과에서 다른 SELECT 결과를 뻄.
  • INTERSECT : 여러개의 SELECT에서 같은 레코드들만 찾는다.
  • COALESCE(ex1,ex2) : NULL을 다른 값으로 바꾸는 경우 사용한다.
  • NULLIF(ex1,ex2) : ex1==ex2이면 NULL을 리턴한다.
  • LISTAGG : GROUP BY에서 사용되는 집계함수, 그룹이 된 레코드들안에서 특정 필드의 값을 붙여준다. LSITAGG(channel,’→’) WITHIN GROUP (ORDER BY ts) channels 처럼 사용하기도 함.
  • WINDOW 함수
    • LAG : 앞의 레코드의 값을 읽어오기 LAG(channel,1) OVER(PARTITION BY userID ORDER BY ts) 주의) 값이 없는경우? → DESC를 활용해서 내림차순으로 긁는다..
  • JSON Parsing Functions : 이미 구조를 아는 상황에서 사용가능한 함수. JSON_EXTRACT_PATH_TEXT

0개의 댓글