[SQL] VIEW, TRANSACTION

impala·2023년 1월 7일
0

SQL 문법

목록 보기
5/8
post-thumbnail

VIEW

  • 실제 테이블에서 SELECT문을 실행한 결과 혹은 실제 테이블들을 JOIN이나 서브쿼리로 이어서 출력한 테이블을 실제 테이블처럼 사용할수 있도록 이름을 붙여서 저장한 것
  • 쿼리의 테이블화
  • 테이블과 동일한 방법으로 사용함
    -- VIEW 생성
    CREATE VIEW VIEW_이름 AS 쿼리문;
    -- VIEW 조회
    SELECT * FROM VIEW_이름;
    -- 뷰 삭제
    DROP VIEW VIEW_이름;
  • VIEW 사용 이유
    • 보안성 : 권한별로 보여주는 데이터를 나눌 수 있음
    • 편리성 : 복잡한 쿼리문을 미리 구현하여 사용할 수 있음
  • 데이터 수정이 가능한 VIEW
    • 집계함수(MAX, MIN등), GROUP BY, UNION, DISTINCT, OUTER JOIN을 사용하지 않은 VIEW
    • SELECT절에 서브쿼리가 없는 VIEW
    • WHERE절의 서브쿼리가 FROM절의 테이블을 참조하지 않는 VIEW
  • VIEW의 데이터를 수정하면 원본 테이블에도 반영됨

TRANSACTION

  • Atomicity(원자성) : 모든 작업이 성공하거나 아예 실패하는 성질.
    • 은행에서 송금을 할 때 내 계좌에서 잔고가 빠져나가면 상대방 계좌 잔고가 올라가야 함
    • 송금 중간에 오류가 나서 내 잔고는 빠졌지만 상대방 잔고는 올라가지 않는 경우 문제가 발생
    • 원자성을 지키기 위해서는 송금 중간에 오류가 난 경우 내 잔고도 돌려놔야됨. 이때 TRANSACTION과 ROLLBACK을 사용
-- 트랜잭션 시작
START TRANSACTION;

작업1

-- 세이브포인트
SAVEPOINT 세이브포인트_이름

작업2

-- 롤백
ROLLBACK						-- TRANACTION시점으로 돌아감
ROLLBACK TO 세이브포인트_이름;	-- 작업2 이전으로 돌아감

작업3

-- 커밋
COMMIT							-- 변경사항을 DB에 반영
  • TRANSACTION 안에서의 작업은 메모리에서 일어나므로 DB에 반영되지 않음
  • ROLLBACK은 트랜잭션상의 작업을 취소할 때 사용
  • COMMIT은 트랜잭션상의 작업을 DB에 반영할 때 사용
  • ROLLBACK은 기본적으로 트랜잭션을 시작하는 시점으로 돌아가지만 SAVEPOINT를 설정해놓으면 세이브한 시점으로 돌아갈 수 있음

참고자료

0개의 댓글