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 '%시 %구';