2025-4-17 22일차

심서진·2025년 4월 17일

수업 정리

트랜잭션

= 하나의 논리적인 작업 단위

  • 작업 단위를 나눠서 사용할 수 있게 하는 문법
  • 단위 안에 있는 쿼리가 모두 성공했을 때만 성공, 하나라도 실패하면 전부 실패로 판단
  • 단위를 나눠서 개발자가 직접적인 제어를 하라고 있는 문법

ex) 입출금
A가 B에게 입금을 한다
A계좌에서 돈이 빠져 나가고 - update
B계좌에서 돈이 추가되고 - update

update member
set account = 10000
where name = A

update member
set account = 30000
where name = B

위의 두 개를 하나의 단위로 묶는 것

  • START TRANSACTION - 단위의 시작지점 정하는
  • OMMIT - 성공 상황인 걸 확인했으니 정삭적으로 완료하겠다(실제로 데이터를 변경하겠다)
  • ROLLBACK - 뭐라도 하나 잘못된 경우 전부 실패로 판단해서 이전으로 돌리겠다(직전 COMMIT상태로 돌리겠다)
  • MYSQL = 쿼리를 실행하면 자동으로 커밋될 수 있게 설정이 되어있는 상태

set autocommit = 0;(자동 커밋 끔)
set autocommit = 1;(자동 커밋 킴)
select @@autocommit;(상태 확인)

특징 4가지 ACID

  • A : 원자성 : 트랜잭션이 DB에 모두 반영되거나 혹은 전혀 반영되지 않아야 함
  • C : 일관성 : 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 함
  • I : 독립성 : 트랜잭션 수행 시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장해야 함
  • D : 영구성 : 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함

프로시저(PROCEDURE)

= 미리 작성해둔 SQL의 집합
프로시저는 함수와 매우 유사하다

함수와의 차이점

  • 리턴이 없다
  • 호출하는 방식이 다르다

함수와의 공통점

  • 인자를 사용할 수 있다
  • 호출하면 쓸 수 있다

DELIMITER = 구분 문자
BEGIN = 여기서부터 시작이야
END = 끝
CALL = 호출


함수

= 하나의 값을 반환하는 SQL 블럭

  • 프로시저와 매우 유사한데 리턴이 필수다(리턴은 한 개만 가능)
  • 만들어져 있는 기능을 수행하고 결과를 돌려준다
  • select와 함께 사용

ex)

deterministic
not deterministic


이벤트(event)

= 정해진 시간에 자동으로 실행되는 작업

mysql에서 스케줄러를 사용할 수 있는 설정

ex)
=2025-04-17 11:38:00 에 지움

ex)
= 하루에 한 번씩 날마다 반복


트리거

= 특정 테이블에 INSERT, UPDATE, DELETE가 발생할 때 자동으로 실행되는 SQL의 집합

백업 데이터 만들 때 사용

ex) ArticleDumy - id, regDate, title, content
Article - id, regDate, title, content
delete from article;
insert into ArticleDumy
select * from article;
article을 실수로 지웠을 때
ArticleDumy에다가 article을 넣을 거야

ex)

0개의 댓글