제37장. UPDATE (2)
"여러 개의 데이터를 한 번에 수정할 수 있을까요?"
학습 목표
이번 장을 학습하면 다음 내용을 할 수 있습니다.
- 여러 행(Row)을 한 번에 수정할 수 있다.
- 다양한 조건과 함께 UPDATE를 사용할 수 있다.
- UPDATE와 WHERE를 함께 활용할 수 있다.
- 여러 데이터를 수정할 때 주의할 점을 설명할 수 있다.
지난 시간을 떠올려 봅시다.
지난 시간에는
한 명의 고객 정보를 수정하는 방법을 배웠습니다.
UPDATE Customers
SET Country = 'Germany'
WHERE CustomerID = 1;
이번에는 조금 다른 상황을 생각해 보겠습니다.
"대한민국 고객이 100명이 있습니다.
모두의 등급을 한 번에 변경할 수 있을까요?"
한 명씩 100번 수정해야 한다면
매우 불편할 것입니다.
SQL은 이런 작업도 한 번에 처리할 수 있습니다.
UPDATE는 여러 행도 수정할 수 있습니다.
WHERE 조건에
여러 행이 포함되면
그 모든 행이 수정됩니다.
예제 1
독일 고객의 국가명을
'Federal Germany'로 변경해 보겠습니다.
UPDATE Customers
SET Country = 'Federal Germany'
WHERE Country = 'Germany';
실행 전
| CustomerID | CustomerName | Country |
| 1 | Alfreds Futterkiste | Germany |
| 6 | Blauer See Delikatessen | Germany |
| 17 | Drachenblut Delikatessend | Germany |
실행 후
| CustomerID | CustomerName | Country |
| 1 | Alfreds Futterkiste | Federal Germany |
| 6 | Blauer See Delikatessen | Federal Germany |
| 17 | Drachenblut Delikatessend | Federal Germany |
조건에 맞는 모든 행이
한 번에 수정되었습니다.
SQL를 한 줄씩 살펴보기
UPDATE Customers
Customers 테이블을 수정합니다.
SET Country = 'Federal Germany'
Country 값을 변경합니다.
WHERE Country = 'Germany';
Country가 Germany인
모든 고객을 찾습니다.
찾은 모든 행이 수정됩니다.
예제 2
가격이 20 이하인 상품의 가격을
22로 변경해 보겠습니다.
UPDATE Products
SET Price = 22
WHERE Price <= 20;
조건을 만족하는 모든 상품의 가격이
22로 수정됩니다.
여러 컬럼도 함께 수정할 수 있습니다.
다음과 같이
여러 컬럼을 동시에 수정할 수도 있습니다.
UPDATE Customers
SET
CustomerName = '홍길동',
Country = 'Korea'
WHERE CustomerID = 100;
SET 뒤에는
쉼표(,)로 여러 컬럼을 구분합니다.
그림으로 이해하기
Customers
↓
WHERE 조건 검사
↓
조건에 맞는 행 선택
↓
SET 실행
↓
수정 완료
UPDATE는
조건을 만족하는 모든 행에
같은 작업을 수행합니다.
실제 업무에서는?
다음과 같은 작업에 자주 사용됩니다.
- 부가가치세율 변경으로 상품 가격 일괄 조정
- 회원 등급 변경
- 주소 체계 변경
- 전화번호 형식 통일
- 재고 상태 변경
한 건씩 수정하는 것보다
훨씬 빠르고 정확합니다.
많이 하는 실수
실수 ①
조건이 너무 넓다.
UPDATE Products
SET Price = 30
WHERE Price > 0;
생각보다 훨씬 많은 상품이 수정될 수 있습니다.
실수 ②
조건을 확인하지 않는다.
WHERE Country = 'Germany'
라고 생각했는데
실제로는
WHERE Country = 'German'
이라고 작성했다면
아무 데이터도 수정되지 않습니다.
실수 ③
수정된 행의 개수를 확인하지 않는다.
SQL을 실행한 후에는
"MySQL이 몇 개의 행을 수정했는가?"를
확인하는 습관이 중요합니다.
예상보다 많거나 적다면
조건을 다시 검토해야 합니다.
실무 습관
UPDATE를 실행하기 전에 같은 WHERE 조건으로 COUNT(*)를 실행해 보세요.
예를 들어
SELECT COUNT(*)
FROM Customers
WHERE Country = 'Germany';
먼저
몇 개의 행이 수정될지 확인합니다.
그 다음
UPDATE Customers
SET Country = 'Federal Germany'
WHERE Country = 'Germany';
를 실행하면
실수를 크게 줄일 수 있습니다.
실무에서는
이 방법을 매우 자주 사용합니다.
한눈에 정리
| WHERE 결과 | UPDATE 동작 |
| 1개의 행 | 1개의 행 수정 |
| 여러 행 | 여러 행 수정 |
| 조건 없음 | 모든 행 수정 |
이번 장 핵심 정리
✅ UPDATE는 여러 행도 한 번에 수정할 수 있다.
✅ WHERE 조건에 맞는 모든 행이 수정된다.
✅ UPDATE 전에 SELECT 또는 COUNT(*)로 수정 대상을 확인하는 것이 좋다.
✅ 수정된 행(Row)의 개수도 반드시 확인하는 습관을 갖는다.
연습 문제
기본 문제
① Country가 USA인 고객의 Country를 United States로 수정하시오.
② 가격이 15 이하인 상품의 Price를 18로 수정하시오.
응용 문제
① Country가 France인 고객의 Country를 French Republic으로 수정하시오.
② Price가 50 이상인 상품의 Price를 55로 수정하시오.
도전 문제
다음 SQL을 실행하면 어떤 일이 발생하는지 설명하시오.
UPDATE Customers
SET Country = 'Korea'
WHERE Country <> 'Korea';
정답
기본 문제
UPDATE Customers
SET Country = 'United States'
WHERE Country = 'USA';
UPDATE Products
SET Price = 18
WHERE Price <= 15;
💡 실무 이야기
실제 업무에서는 여러 행을 한 번에 수정하는 UPDATE를 매우 자주 사용합니다. 하지만 수정 대상이 많아질수록 실수의 영향도 커집니다.
예를 들어 상품 가격을 5% 인상하려고 했는데 WHERE 조건을 잘못 작성하면 모든 상품의 가격이 변경될 수 있습니다. 이런 실수는 고객에게 잘못된 가격이 노출되거나 매출 손실로 이어질 수도 있습니다.
그래서 개발자들은 UPDATE를 실행하기 전에 다음과 같은 순서를 지키는 경우가 많습니다.
- SELECT로 수정 대상 확인
- COUNT(*)로 수정될 행(Row)의 개수 확인
- UPDATE 실행
- 영향받은 행(Row) 수 확인
이 네 단계는 데이터베이스를 안전하게 관리하기 위한 대표적인 실무 절차입니다.
✨ 다음 장 예고
다음 장에서는 UPDATE 파트의 마지막 내용으로, 수식을 이용한 UPDATE를 배워 보겠습니다.
예를 들어
UPDATE Products
SET Price = Price * 1.10;
처럼 기존 값을 이용하여 새로운 값을 계산하는 방법을 익히게 됩니다.
학생들은 이 장을 통해 UPDATE가 단순히 값을 바꾸는 명령이 아니라, 데이터를 계산하여 일괄 변경하는 강력한 도구라는 사실을 이해하게 될 것입니다. 이는 급여 인상, 할인율 적용, 재고 조정 등 실제 업무에서 매우 자주 활용되는 중요한 기능입니다.
'프로그래밍 > MySQL' 카테고리의 다른 글
| 📊 [SQL] 제36장 UPDATE - 저장된 데이터를 수정할 수 있을까요? (0) | 2026.07.13 |
|---|---|
| 📊 [SQL] 제35장 INSERT(3) - 번호를 직접 입력하지 않아도 될까요? (0) | 2026.07.10 |
| 📊 [SQL] 제34장 INSERT(2) - 조회한 결과를 그대로 저장할 수 있을까요? (0) | 2026.07.10 |
| 📊 [SQL] 제33장 INSERT - 이제 데이터를 추가해 볼까요? (0) | 2026.07.10 |
| 📊 [SQL] 제32장 서브쿼리(3) - FROM절에서 사용하는 서브쿼리 (0) | 2026.07.10 |