본문 바로가기
개발/Database

트랜잭션, 뷰, Date

by BellOne4222 2024. 2. 7.

뷰 (VIEW)

  • 쿼리를 저장하여 결과를 여러번 반복해서 확인하는 방법. 흔히, 가상 테이블이라 한다. 실제로 동작하는 것은 내부적으로 서브 쿼리를 호출한다.
  • 뷰의 유용성
    • 테이블 구조가 변경되어도 뷰를 계속 사용 할 수 있다.
    • 애플리케이션 코드에 복잡한 쿼리가 존재하지 않게 할 수 있다.
    • 쿼리가 애플리케이션에 노출 되지 않는다.
CREATE VIEW girl_group_song AS SELECT gg._id, gg.name, s.title FROM girl_group AS gg
JOIN song AS s ON s._id = gg.hit_song_id;

SELECT * FROM girl_group_song;

 

트랜잭션(TRANSACTION)

  • 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위
  • ACID
    • Atomicity(원자성)
      • 트랜잭션이 데이터에 모두 반영되던가 아니면 전혀 반영되지 않아야 한다.
      • 만약 트랜잭션 단위로 데이터가 처리되지 않는다면, 설계한 사람은 데이터 처리 시스템을 이해하기 힘들 뿐만 아니라, 오작동 했을시 원인을 찾기가 매우 힘들어질것이다.
    • Consistency(일관성)
      • 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다.
      • 트랜잭션이 진행되는 동안에 데이터베이스가 변경 되더라도 업데이트된 데이터베이스로 트랜잭션이 진행되는것이 아니라, 처음에 트랜잭션을 진행 하기 위해 참조한 데이터베이스로 진행된다. 이렇게 함으로써 각 사용자는 일관성 있는 데이터를 볼 수 있는 것이다.
    • Isolation(독립성)
      • 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들 수 없다.
      • 하나의 특정 트랜잭션이 완료될 때 까지 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없다.
    • Duability(지속성)
      • 트랜잭션이 성공적으로 완료 되었을 경우 결과는 영구적으로 반영되어야 한다.
  • Commit
    • 하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태에 있을 때 하나의 트랜잭션의 완료를 나타냄
    • 수행했던 트랜잭션이 로그에 저장되며, 후에 Rollback 연산을 수행했었던 트랜잭션 단위로 하는 것을 도와준다.
  • Rollback
    • 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진 경우, 트랜잭션을 처음부터 다시 시작하거나, 트랜잭션의 부분적으로만 연산된 결과를 다시 취소시킨다.
  • 트랜잭션이 가능한 엔진
    • BDB
    • InnoDB(DEFAULT)

 

DATE(DATETIME, TIME)

자료형  format  예 
DATE  YYYY-MM-DD  2016-11-23
DATETIME  YYYY-MM-DD HH:MM:SS 2016-11-23 11:12:53
TIMESTAMP  YYYYMMDDHHMMSS  20161123111253 
 TIME HH:MM:SS  11:12:53 

 

  • TIMESTAMP
    • 시스템 변수를 통해 시간을 받아온다.
    • 어떤 처리시간을 저장 할 때 유용하다.
  • DATETIME
    • 시간을 임의로 입력
    • 미래의 일정에 적합하다.

 

CREATE TABLE date_table
(
  _id INT PRIMARY KEY AUTO_INCREMENT,
  d_date DATE
);

INSERT INTO date_table VALUES(0, '2016-11-22');

SELECT DATE_FORMAT(d_date, '%M %Y') FROM date_table;

 

'개발 > Database' 카테고리의 다른 글

윈도우 함수  (1) 2024.02.25
PK FK UK CK  (0) 2024.02.15
사용자 권한 주기 (GRANT)  (0) 2024.02.07
유니온(UNION), 서브 쿼리  (0) 2024.02.06
조인 : JOIN (INNER, OUTER, CROSS, SELF)  (0) 2024.02.05