SQL 기초집LESSON 12
UPDATE, DELETE와 안전한 데이터 수정
난이도입문 → 초급
예상 시간30분
선수지식이전 강의
12강. UPDATE, DELETE와 안전한 데이터 수정
1. 이번 강의에서 해결할 문제
WHERE 없는 UPDATE나 DELETE는 테이블 전체를 바꾸거나 지웁니다. 실제 변경 전에 대상과 행 수를 확인하고 실수하면 ROLLBACK할 수 있는 절차를 사용합니다.
2. 학습 목표
3. 핵심 개념
UPDATE는 기존 행의 열을 바꾸고 DELETE는 행을 제거합니다. 둘 다 되돌리기 어려울 수 있으므로 같은 WHERE의 SELECT, 예상 행 수, 트랜잭션 순서를 지킵니다. DROP은 테이블 구조와 모든 행을 제거하므로 이번 강의에서 실행하지 않습니다.
4. 단계별 SQL 예시
위험도: 데이터 변경·삭제. 실습 DB 백업 후 실행
대상 테이블: players
파일 경로: C:\dev\game-ranking-db\sql\12-safe-change.sql
sql/12-safe-change.sql
-- 1. 변경 대상 사전 검증
SELECT player_id, username, region
FROM players
WHERE username = 'mage_02';
BEGIN;
-- 2. 검증한 같은 조건으로 변경
UPDATE players
SET region = 'KR'
WHERE username = 'mage_02';
SELECT changes() AS updated_rows;
SELECT player_id, username, region
FROM players
WHERE username = 'mage_02';
-- 결과가 맞을 때만 COMMIT. 연습에서는 ROLLBACK으로 복구
ROLLBACK;
-- 삭제도 먼저 대상만 조회
SELECT player_id, username
FROM players
WHERE username = 'temporary_user';
PowerShell · 실행 순서
Copy-Item .\data\game_ranking.db .\data\game_ranking.before-update.db
sqlite3 -header -box .\data\game_ranking.db ".read .\sql\12-safe-change.sql"
5. 쿼리가 동작하는 이유
BEGIN 이후 변경은 COMMIT 전까지 하나의 트랜잭션 안에 있습니다. ROLLBACK은 그 트랜잭션 변경을 취소합니다. SQLite changes()는 직전 변경 문장의 영향 행 수를 알려 줘 예상 범위와 비교하게 합니다.
6. 자주 하는 실수와 안전한 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2UPDATE, DELETE와 안전한 데이터 수정 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
12강. UPDATE, DELETE와 안전한 데이터 수정 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.