3 정답
DELETE FROM emp_delete
WHERE emp_name = '플랑크'
ORDER BY emp_no
LIMIT 1;
해설 emp_delete 테이블에는 사원명이 플랑크인 건이 2건(1009와 1019) 있습니다. 여기서 사번이 빠른 1009 건만 삭제해야 하므로 WHERE 절에 사원명이 플랑크인 건을 검색하는 조건을 주고 ORDER BY 절에 emp_no와 LIMIT 1을 추가합니다. 이렇게 하면 사번이 빠른 건부터 삭제하되 1건만 삭제됩니다. 결과적으로 사번이 1009이고 사원명이 플랑크인 건만 삭제되고 1019인 건은 삭제되지 않습니다.
4 정답
START TRANSACTION;
-- 잘못 삭제한 DELETE 문
DELETE FROM emp_tran2
WHERE salary = 100;
-- 데이터 확인
SELECT *
FROM emp_tran2;
-- 삭제 작업 취소
ROLLBACK;
해설 트랜잭션 처리를 위해 먼저 START TRANSACTION 문을 실행합니다. 그리고 emp_trans2 테이블에서 salary 칼럼 값이 100인 건을 삭제하는 DELETE 문을 실행합니다. 그다음 SELECT 문으로 데이터를 확인했더니 salary 값이 1000인 건을 삭제해야 하는데 100인 건을 삭제했음을 알았습니다. 따라서 마지막에 ROLLBACK 문을 실행해 삭제한 작업을 취소합니다.