제38장. UPDATE (3)
"기존 값을 계산해서 수정할 수 있을까요?"
학습 목표
이번 장을 학습하면 다음 내용을 할 수 있습니다.
- 기존 값을 이용하여 데이터를 수정할 수 있다.
- UPDATE 문에서 산술 연산을 사용할 수 있다.
- 여러 행의 값을 한 번에 계산하여 수정할 수 있다.
- 계산을 이용한 UPDATE의 활용 사례를 설명할 수 있다.
지난 시간을 떠올려 봅시다.
지난 시간에는 조건에 맞는 여러 행을 한 번에 수정하는 방법을 배웠습니다.
예를 들어
UPDATE Customers
SET Country = 'Federal Germany'
WHERE Country = 'Germany';
처럼 같은 값으로 변경했습니다.
그런데 이번에는 조금 다른 상황을 생각해 보겠습니다.
모든 상품의 가격을 10% 인상하려면 어떻게 해야 할까요?
상품이 77개라면
가격을 하나씩 입력해야 할까요?
그럴 필요는 없습니다.
UPDATE는 기존 값을 이용하여 새로운 값을 계산할 수 있습니다.
기존 값을 이용하여 계산하기
상품 가격이 다음과 같다고 가정해 보겠습니다.
| ProductName | Price |
| Chai | 18.00 |
| Chang | 19.00 |
| Aniseed Syrup | 10.00 |
모든 상품 가격을
10% 인상하려면
다음과 같이 작성합니다.
UPDATE Products
SET Price = Price * 1.10;
실행 결과
| ProductName | 수정 전 | 수정 후 |
| Chai | 18.00 | 19.80 |
| Chang | 19.00 | 20.90 |
| Aniseed Syrup | 10.00 | 11.00 |
각 상품의 가격이
자동으로 계산되어 저장됩니다.
SQL를 한 줄씩 살펴보기
UPDATE Products
Products 테이블을 수정합니다.
SET Price = Price * 1.10
오른쪽의 Price는 현재 저장되어 있는 값입니다.
그 값을 1.10배 계산한 후
왼쪽의 Price에 다시 저장합니다.
즉,
현재 Price
↓
× 1.10
↓
새로운 Price
가 되는 것입니다.
다양한 계산도 가능합니다.
가격을 500원 인상하기
UPDATE Products
SET Price = Price + 500;
재고를 1개 감소시키기
UPDATE Products
SET Stock = Stock - 1;
(※ Stock 컬럼이 있다고 가정한 예제입니다.)
주문 수량을 두 배로 만들기
UPDATE OrderDetails
SET Quantity = Quantity * 2;
기존 값을 이용한 다양한 계산이 가능합니다.
WHERE와 함께 사용하기
모든 상품이 아니라
20달러 이상인 상품만
10% 인상하려면
UPDATE Products
SET Price = Price * 1.10
WHERE Price >= 20;
조건에 맞는 상품만 수정됩니다.
그림으로 이해하기
Price
↓
현재 값 읽기
↓
계산하기
↓
새로운 값 저장
UPDATE는
단순히 값을 바꾸는 것이 아니라
계산까지 수행할 수 있습니다.
실제 업무에서는?
다음과 같은 작업에 자주 사용됩니다.
- 상품 가격 일괄 인상
- 할인 행사 적용
- 직원 급여 인상
- 재고 수량 조정
- 포인트 적립
한 번의 UPDATE로
수천 개의 데이터를 계산하여 수정할 수 있습니다.
많이 하는 실수
실수 ①
기존 값을 사용하지 않는다.
UPDATE Products
SET Price = 100;
모든 가격이
100으로 변경됩니다.
원래 가격은 모두 사라집니다.
실수 ②
계산식을 잘못 작성한다.
UPDATE Products
SET Price = Price * 10;
10% 인상을 하려던 것이
가격이 10배가 되어 버립니다.
실수 ③
WHERE를 빠뜨린다.
UPDATE Products
SET Price = Price * 1.10;
모든 상품 가격이 변경됩니다.
원하는 대상만 수정하려면
WHERE를 반드시 확인해야 합니다.
실무 습관
UPDATE를 실행하기 전에 SELECT로 계산 결과를 먼저 확인하세요.
예를 들어
SELECT
ProductName,
Price,
Price * 1.10 AS NewPrice
FROM Products
WHERE Price >= 20;
먼저 계산 결과를 확인합니다.
원하는 값이 맞다면
그 다음 UPDATE를 실행합니다.
이 방법은
실무에서 매우 자주 사용하는 안전한 습관입니다.
한눈에 정리
| 목적 | SQL 예 |
| 10% 인상 | Price = Price * 1.10 |
| 500 증가 | Price = Price + 500 |
| 100 감소 | Price = Price - 100 |
| 2배 증가 | Quantity = Quantity * 2 |
이번 장 핵심 정리
✅ UPDATE에서는 기존 값을 이용하여 계산할 수 있다.
✅ 산술 연산(+, -, *, /)을 사용할 수 있다.
✅ WHERE와 함께 사용하면 원하는 데이터만 수정할 수 있다.
✅ UPDATE 전에 SELECT로 계산 결과를 확인하면 실수를 줄일 수 있다.
연습 문제
기본 문제
① Products 테이블의 모든 상품 가격을 5% 인상하는 SQL을 작성하시오.
② Price가 30 이상인 상품만 2달러 인상하는 SQL을 작성하시오.
응용 문제
① Quantity를 2배로 변경하는 SQL을 작성하시오.
② Price가 15 이하인 상품만 10% 할인하는 SQL을 작성하시오.
도전 문제
다음 SQL을 실행하면 상품 가격은 어떻게 변경되는지 설명하시오.
UPDATE Products
SET Price = (Price + 5) * 1.10
WHERE Price < 20;
정답
기본 문제
UPDATE Products
SET Price = Price * 1.05;
UPDATE Products
SET Price = Price + 2
WHERE Price >= 30;
💡 실무 이야기
UPDATE는 단순히 값을 바꾸는 명령이 아닙니다.
실무에서는 "기존 값을 기준으로 계산하여 수정하는 작업"이 훨씬 많습니다.
예를 들어 새로운 세금 정책이 시행되어 모든 상품 가격을 일정 비율만큼 조정하거나, 직원들의 급여를 직급별로 일괄 인상하거나, 재고를 일괄 차감하는 작업이 대표적인 사례입니다.
이런 작업을 프로그램에서 하나씩 처리하면 시간이 오래 걸리지만, UPDATE 한 문장으로 데이터베이스가 직접 계산하도록 하면 훨씬 빠르고 정확하게 처리할 수 있습니다.
UPDATE 파트 한눈에 보기
| 장 |
핵심 내용 |
| 제36장 | UPDATE의 기본 문법과 한 행(Row) 수정 |
| 제37장 | WHERE를 이용한 여러 행(Row) 수정 |
| 제38장 | 계산을 이용한 UPDATE와 실무 활용 |
기억해 두세요!
INSERT는 새로운 데이터를 만드는 명령이고, UPDATE는 기존 데이터를 더 정확한 정보로 바꾸는 명령입니다.
그리고 UPDATE를 사용할 때 가장 중요한 원칙은 "무엇을 수정하는지 먼저 확인하고 실행하는 것"입니다. 이 습관은 SQL을 배우는 모든 과정에서 가장 중요한 실무 습관 가운데 하나입니다.
'프로그래밍 > MySQL' 카테고리의 다른 글
| 📊 [SQL] 제37장 UPDATE(2) - 여러 개의 데이터를 한 번에 수정할 수 있을까요? (0) | 2026.07.13 |
|---|---|
| 📊 [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 |