트랜잭션
: 동시성을 만족하게 실행되어야 하는 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
'코딩테스트 > SQL' 카테고리의 다른 글
SQL > leetcode 1661. Average Time of Process per Machine (MySQL) (0) | 2024.05.24 |
---|---|
SQL > leetcode 1280. Students and Examinations (MySQL) (0) | 2024.05.23 |
SQL > leetcode 197. Rising Temperature (MySQL) (0) | 2024.05.17 |
SQL - Aggregate, CTAS, Join (0) | 2024.03.15 |
SQL - Select (1) | 2024.03.15 |