본문 바로가기
프로그래밍/MySQL

📊 [SQL] 제37장 UPDATE(2) - 여러 개의 데이터를 한 번에 수정할 수 있을까요?

by 강릉바다의 블로그 2026. 7. 13.

제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를 실행하기 전에 다음과 같은 순서를 지키는 경우가 많습니다.

  1. SELECT로 수정 대상 확인
  2. COUNT(*)로 수정될 행(Row)의 개수 확인
  3. UPDATE 실행
  4. 영향받은 행(Row) 수 확인

이 네 단계는 데이터베이스를 안전하게 관리하기 위한 대표적인 실무 절차입니다.


✨ 다음 장 예고

다음 장에서는 UPDATE 파트의 마지막 내용으로, 수식을 이용한 UPDATE를 배워 보겠습니다.

예를 들어

UPDATE Products
SET Price = Price * 1.10;

처럼 기존 값을 이용하여 새로운 값을 계산하는 방법을 익히게 됩니다.

학생들은 이 장을 통해 UPDATE가 단순히 값을 바꾸는 명령이 아니라, 데이터를 계산하여 일괄 변경하는 강력한 도구라는 사실을 이해하게 될 것입니다. 이는 급여 인상, 할인율 적용, 재고 조정 등 실제 업무에서 매우 자주 활용되는 중요한 기능입니다.