MySQL

MySQL - WHERE 조건 절과 UPDATE 구문

jiyoon12 2025. 5. 9. 17:28

1. UPDATE 구문

  • 테이블의 기존 데이터를 수정 할 때 사용한다.
  • 기본 구조는 아래와 같다.
UPDATE 테이블명
SET 컬럼1 = 값1, 컬럼2 = 값2, ...
WHERE 조건
  • SET : 변경하고 싶은 칼럼과 새로운 값을 지정한다.
  • WHERE : 어떤 행을 수정할지 지정한다. 생략 시 모든 행이 수정되는 점을 주의해야한다.
  • 실수 방지를 위해 UPDATE 전에 SELECT로 조건을 확인하는 것이 좋다.

 

 

2. UPDATE 구문 실습

  • 샘플 데이터
CREATE TABLE `order` (
  id INT PRIMARY KEY,
  order_name VARCHAR(20) NOT NULL,
  product_name VARCHAR(20) NOT NULL,
  quantity INT NOT NULL,
  order_date DATE NOT NULL
);

INSERT INTO `order` (id, order_name, product_name, quantity, order_date) VALUES
(1, '홍길동', '피자', 2, '2022-02-26'),
(2, '김영희', '치킨', 3, '2022-02-26'),
(3, '이철수', '햄버거', 1, '2022-02-27'),
(4, '박지민', '스테이크', 2, '2022-02-27'),
(5, '최영희', '짬뽕', 1, '2022-02-27'),
(6, '박서준', '초밥', 3, '2022-02-28'),
(7, '김민지', '파스타', 2, '2022-02-28'),
(8, '정재은', '토스트', 1, '2022-02-28'),
(9, '신은주', '감바스', 2, '2022-03-01'),
(10, '유지훈', '돈까스', 1, '2022-03-01');

 

  • 단일 조건 수정
-- 단일 조건 수정
-- 1.1 문제 : id가 2인 주문의 수량을 4로 수정하시오.
update `order`
set quantity = 4
where id = 2;


-- 1.2 문제 : id가 4인 주문의 상품명을 파스타로 변경해주세요.
update `order`
set product_name = '파스타'
where id = 4;


-- 1.3문제 : id가 6인 주문의 날짜를 2025-05-09로 변경해주세요.
update `order`
set order_date = '2025-05-09'
where id = 6;

 

  • 복합 조건 수정
-- 2. 복합 조건 수정
-- 2.1문제 : 수량이 2 이상이고 상품명이 '피자'인 경우 주문자를 '김철수'로 변경

-- 수정하기 전에 반드시 같은 조건절로 select 구문을 실행하고 확인
select * 
from `order`
where quantity >= 2 and product_name = '피자';

update `order`
set order_name = '김철수'
where quantity >= 2 and product_name = '피자';


-- 2.2문제 : 주문일이 2025-05-09이고 삼품이 '초밥'인 경우 수량을 6으로 변경하시오.
select *
from `order`
where order_date = '2025-05-09' and product_name = '초밥';

update `order`
set quantity = 6
where order_date = '2025-05-09' and product_name = '초밥';


-- 2.3 문제 : 수량이 2 이하이고 상품이 '감바스'인 경우 주소를 '서울시 강남구'로 설정하시오.

-- 현재 address 칼럼이 없는 상태이다 칼럼을 추가해보자
alter table `order` add address varchar(100);

select *
from `order`
where quantity <= 2 and product_name = '감바스';

update `order`
set address = '서울시 강남구'
where quantity <= 2 and product_name = '감바스';

 


  • 도전 과제 풀어보기
-- 도전 과제

 -- 1. id가 3부터 7인 주문들의 수량을 3으로 수정
 select *
from `order`
where id between 3 and 7;
 
 update `order`
 set quantity = 3
where id between 3 and 7;


 -- 2. 주문일이 2022-02-26인 주문의 상품명을 '샐러드'로 변경
 select * 
from `order`
where order_date = '2022-02-26';

update `order`
set product_name = '샐러드'
where order_date = '2022-02-26';


 -- 3. 주문자가 '김민지'이고 수량이 3인 경우, 주소를 '경기도 수원시'로 수정
select * 
from `order`
where order_name = '김민지' and quantity = 3;

update `order`
set address = '경기도 수원시'
where order_name = '김민지' and quantity = 3;

 

  • 만든 문제 풀어보기
-- 수량이 2이거나 상품명이 '햄버거'인 경우, 주문일을 '2022-02-25'로 변경
 select * 
from `order`
where quantity = 2 or product_name = '햄버거';

update `order`
set order_date = '2022-02-25'
where quantity = 2 or product_name = '햄버거';

-- 주문일자 2022년도이고  주소가 null 이면 -->  주소를  '부산시 부산진구' 로 수정
 select * 
from `order`
where order_date like '2022%' and address is null;

update `order`
set address = '부산시 부산진구'
where order_date like '2022%' and address is null;

-- 1번과 5번의 주소를 각각 경상도 양산시, 부산시 연제구로 수정한 뒤, 도시 단위가 'OO시 OO구'인 사람만 출력해주세요
update `order`
set address = '경상도 양산시'
where id = 1;

update `order`
set address = '부산시 연제구'
where id = 5;

select *
from `order`
where address like '%시%구';


-- ID가 5인 주문자의 이름을 ‘잠온다’로 변경하고, 상품명을 ‘집’으로 변경
update `order`
set order_name = '잠온다'
where id = 5; 

update `order`
set product_name = '집'
where id = 5;

-- 이름에 "희"가 들어가고 quantity가  2일경우 상품을 햄버거로 변경
update `order`
set product_name = '햄버거'
where order_name like '%희' and quantity = 4;

-- 수량이 2이하이고 주문일이 2022년 02월 이면 이름을 콜라로 바꿔주세요
select *
from `order`
where quantity <= 2 and order_date like '2022-02%';

update `order`
set order_name = '콜라'
where quantity <= 2 and order_date like '2022-02%';