
정답REVOKE는 데이터 조작어(DML)가 아니라 권한을 회수하는 데이터 제어어(DCL)이므로 옳지 않습니다.
핵심 개념
SQL의 분류 — DDL·DML·DCL·TCL
SQL은 관계 데이터베이스의 표준 언어로, 기능에 따라 크게 네 갈래로 나뉩니다. 데이터 정의어(DDL)는 CREATE·ALTER·DROP처럼 스키마 객체를 정의·변경하고, 데이터 조작어(DML)는 SELECT·INSERT·UPDATE·DELETE로 데이터를 검색·삽입·수정·삭제합니다. 데이터 제어어(DCL)는 GRANT·REVOKE로 사용자 권한을 부여하거나 회수하고, 트랜잭션 제어어(TCL)는 COMMIT·ROLLBACK·SAVEPOINT로 트랜잭션의 완료와 철회를 표현합니다. 이 문제는 각 명령어가 어느 범주에 속하는지를 정확히 구분할 수 있는지를 묻고 있습니다.
선지별 해설
①SQL은 ANSI/ISO 표준으로 제정되어 관계 데이터베이스 관리 시스템(RDBMS)의 표준 질의어로 사용되고 있으므로 맞는 설명입니다.
②SQL은 정의(DDL)·질의 및 갱신(DML)·제어(DCL) 기능을 한 언어 안에 모두 담고 있어 포괄적인 데이터베이스 언어로 불리므로 맞는 설명입니다.
③트랜잭션의 완료는 COMMIT, 철회는 ROLLBACK, 시작은 START TRANSACTION(BEGIN)으로 표현하는 트랜잭션 제어 기능이 SQL에 포함되어 있으므로 맞는 설명입니다.
④SELECT는 데이터 조작어가 맞지만 REVOKE는 GRANT로 부여한 권한을 회수하는 데이터 제어어(DCL)입니다. 데이터 조작어의 예로는 INSERT·DELETE를 들어야 하므로 이 선지가 옳지 않습니다.

정답T4는 REDO, T2·T3는 UNDO 대상이므로 A=20, B=12, C=30, D=15가 됩니다.
핵심 개념
검사점을 가진 즉시갱신 기법의 UNDO/REDO 회복
즉시갱신(immediate update) 기법은 트랜잭션이 커밋되기 전이라도 변경 내용을 데이터베이스에 즉시 반영하되, 반드시 로그를 먼저 기록합니다. 고장이 나면 로그를 검사점(checkpoint) 이후부터 살펴, 커밋 로그가 있는 트랜잭션은 REDO(변경 값으로 다시 반영)하고, 시작만 하고 커밋하지 못한 트랜잭션은 UNDO(현재 값으로 되돌림)합니다. 검사점 이전에 이미 커밋된 트랜잭션은 디스크에 반영이 보장되므로 아무 조치도 하지 않습니다. 로그 레코드가 <트랜잭션, 항목, 현재 값, 변경 값>이므로 UNDO는 세 번째 값, REDO는 네 번째 값으로 복원한다는 점이 계산의 핵심입니다.
선지별 해설
①A=30은 커밋된 T4의 <T4, A, 30, 20>을 REDO하지 않은 값이고, D=20은 T1 시점 값으로 되돌린 것이어서 회복 결과와 맞지 않습니다.
②B=18, C=40은 커밋하지 못한 T2·T3의 변경 값을 그대로 남긴 것이고 D=25도 T2의 미완료 갱신이 남은 값이어서, UNDO를 수행하지 않은 잘못된 결과입니다.
③D=15는 옳지만 A=30(T4 REDO 누락), B=18·C=40(T2·T3 UNDO 누락)이 함께 어긋나므로 정답이 될 수 없습니다.
④검사점 이후 T4만 커밋되었으므로 REDO 대상은 T4, UNDO 대상은 T2·T3입니다. T4를 REDO하면 D=15, A=20이 되고, T2를 UNDO하면 B=12·D=15, T3를 UNDO하면 C=30이 됩니다. T1은 검사점 이전 커밋이라 대상이 아니므로 최종값은 A=20, B=12, C=30, D=15입니다.