[프로그래머스] 데브코스 데이터엔지니어링 TIL Day 25

주재민·2023년 11월 17일
0
post-thumbnail

📖 학습주제

데이터 웨어하우스와 SQL 기본에 대해 배우고 이를 바탕으로 데이터 분석에 대해 학습 (5)


트랜잭션

  • Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는
    방법
    -> 트랜잭션으로 묶인 SQL중 하나라도 실패하면 실행 전으로 돌아감(ROLLBACK)
  • DDL이나 DML 중 레코드를 수정/추가/삭제한 것에만 의미가 있음. SELECT에 사용할 이유가 x(트랜잭션 적용해야 할 SQL을 구분해야 함)
  • BEGIN과 END 혹은 BEGIN과 COMMIT(혹은 END) 사이에 해당 SQL들을 사용
  • ROLLBACK으로 BEGIN 이전으로 돌아갈 수 있음

예를 들어 은행에서 계좌 이체를 하는 과정을 생각해보자.
은행은 송금 계좌에서 돈을 인출해 수금 계좌에 돈을 입급해야 한다. 그런데 인출하는 과정은 성공했으나 입금 과정에서 실패한다면? 이 과정이 트랜잭션으로 묶여있다면 돈을 인출하기 이전으로 돌아간다.(트랜잭션으로 묶이지 않았다면 그대로 돈을 잃을 것이다.)

BEGIN;
 A의 계좌로부터 인출;
 B의 계좌로 입금;
END;

트랜잭션 커밋 모드: autocommit

autocommit = True

  • 모든 레코드 수정/삭제/추가 작업이 기본적으로 바로 데이터베이스에 쓰여짐. 이를 커밋(Commit)된다고 함
  • 만일 특정 작업을 트랜잭션으로 묶고 싶다면 BEGIN과 END(COMMIT)/ROLLBACK으로 처리

autocommit = False

  • 모든 레코드 수정/삭제/추가 작업이 COMMIT 호출될 때까지 커밋되지 않음

DELETE FROM vs. TRUNCATE

DELETE FROM table_name

  • WHERE 사용해 특정 레코드만 삭제 가능
  • 속도가 느림

TRUNCATE table_name

  • WHERE을 지원하지 않음 : 특정 레코드만 삭제 불가
  • Transaction을 지원하지 않음 : 롤백 불가

둘 다 테이블에서 모든 레코드를 삭제하지만 전체 테이블의 내용 삭제시에는 DELETE FROM보다 TRUNCATE가 여러모로 유리 but 롤백이 안되므로 신중해야 함

SQL 고급 문법

UNION(합집합)

  • 여러개의 테이블들이나 SELECT 결과를 하나의 결과로 합쳐줌
    - UNION : 중복제거
    - UNION ALL : 중복포함

EXCEPT (MINUS)

  • 하나의 SELECT 결과에서 다른 SELECT 결과를 빼주는 것이 가능

INTERSECT (교집합)

  • 여러 개의 SELECT문에서 같은 레코드들만 찾아줌

COALESCE(Expression1, Expression2, …)

  • Expression1부터 인자를 하나씩 살펴서 NULL이 아닌 값이 나오면 그걸 리턴
  • 모두 NULL이면 최종적으로 NULL을 리턴
  • NULL값을 다른 값으로 바꾸고 싶을 때 사용

NULLIF(Expression1, Expression2)

  • Expression1과 Expression2의 값이 같으면 NULL을 리턴

LISTAGG

LISTAGG(field1, sep) WITHIN GROUP (ORDER BY field2)
  • GROUP BY에서 사용되는 Aggregate 함수 중의 하나
  • 그룹에 속해있는 데이터들을 한 줄에 나열해 리턴
  • WITHIN GROUP (ORDER BY field2)으로 정렬 가능
  • 두번째 인자로 구분자 지정 가능

WINDOW 함수

문법

window_function(expression) OVER ( [ PARTITION BY expression] [ ORDER BY expression ] )
  • OVER 사용
  • PARTITION BY : 소그룹으로 나누는 기준
  • ORDER BY : 순서를 정하는 기준
  • e.g.)
    - ROW_NUMBER, FIRST_VALUE, LAST_VALUE, LAG
    - Math functions: AVG, SUM, COUNT, MAX, MIN, MEDIAN, NTH_VALUE

LAG

  • 기준 데이터의 이전행의 값을 반환

JSON FUNCITONS

https://docs.aws.amazon.com/redshift/latest/dg/json-functions.html

0개의 댓글