MySQL

UPDATE 연습 예제

whs5758 2025. 5. 9. 16:11
order 테이블 샘플 데이터
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');
단일 조건 수정
-- ID가 2인 주문의 수량을 4로 수정
UPDATE `order`
SET quantity = 4
WHERE id = 2;

-- ID가 4인 주문의 상품명을 '파스타'로 변경
UPDATE `order`
SET product_name = '파스타'
WHERE id = 4;

-- ID가 6인 주문의 날짜를 2022-03-01로 변경
UPDATE `order`
SET order_date = '2022-03-01'
WHERE id = 6;

 

복합 조건 수정
-- 수량이 2 이상이고, 상품명이 '피자'인 경우 주문자를 '김철수'로 변경
UPDATE `order`
SET order_name = '김철수'
WHERE quantity >= 2 AND product_name = '피자';

-- 주문일이 2022-02-28이고 상품이 '초밥'인 경우 수량을 6으로 변경
UPDATE `order`
SET quantity = 6
WHERE order_date = '2022-02-28' AND product_name = '초밥';

 

테이블 구조 변경 + UPDATE
-- address 컬럼 추가
ALTER TABLE `order`
ADD address VARCHAR(100);

-- 수량이 1 이하이고 상품이 '감바스'인 경우 주소를 '서울시 강남구'로 설정
UPDATE `order`
SET address = '서울시 강남구'
WHERE quantity <= 1 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;

-- 4. 문제 스스로 하나 만들어서 풀어 보기


-- 4.0. 성이 김씨가 아닌 주문자 중에 수량이 2이하이고 주소가 없는 사람의 주소를 '부산광역시 사상구'로 변경하시오

select * from `order`
where order_name not like '김%'  and quantity <= 2  and address is null;

update `order`
set address = '부산광역시 사상구'
where order_name not like '김%'  and quantity <= 2  and address is null;

select * from `order`
where order_name not like '김%'  and quantity <= 2 and address = '부산광역시 사상구';

-- 4-1. 수량이 3보다 낮거나 같고 성이 김으로 시작하는 주문자의 주소를 '경상남도 김해시'로 변경
select *
from `order`
where order_name like '김%';

update `order`
set address = '경상남도 김해시'
where quantity <= 3 and order_name like '김%';

-- 4-2. 성이 김씨인 사람의 주소를 '경기도 수원시'로 변경
-- 그리고 그 사람들의 주문 상품명을 '삼다수'로 변경
select *
from `order`
where order_name like '김%';

update `order`
set address = '경기도 수원시', product_name = '삼다수'
where order_name like '김%';


-- 4.3 주소값이 null 이면 주소를 '서울시 송파구'로 변경하시오
select *
from `order`
where address is null;

update `order`
set address = '서울시 송파구'
where address is null;

-- 4.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%'; 

-- 4.5 id 1번과 5번의 주소를 각각 경상도 양산시, 부산시 연제구로 수정한 뒤, 
-- 도시 단위가 'OO시 OO구'인 사람을 전체 출력해주세요

select *
from `order`
where id in (1, 5);

update `order`
set address = '경상도 양산시'
where id = 1;

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

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

 

 

'MySQL' 카테고리의 다른 글

DELETE 연습 예제  (0) 2025.05.09
DELETE 구문과 조건절  (0) 2025.05.09
UPDATE 구문과 조건절  (0) 2025.05.09
WHERE 절 도전 과제  (0) 2025.05.09
WHERE 절 연습 예제  (0) 2025.05.09