뷰 (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(지속성)
- 트랜잭션이 성공적으로 완료 되었을 경우 결과는 영구적으로 반영되어야 한다.
- Atomicity(원자성)
- 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 |