본문으로 건너뛰기
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와 안전한 데이터 수정 미완료 상태