본문으로 건너뛰기
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

UPDATE, DELETE와 안전한 데이터 수정 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“UPDATE, DELETE와 안전한 데이터 수정” 작업 전 검토에서 채택해야 할 안전 기준은 무엇인가요?
  2. 문제 2“UPDATE, DELETE와 안전한 데이터 수정”에서 ‘WHERE 없는 UPDATE/DELETE’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

12강. UPDATE, DELETE와 안전한 데이터 수정 미완료 상태