(DB) UPDATE 구문과 조건절 -10
학습 목표
-UPDATE 구문을 통해 테이블의 데이터를 수정하는 방법을 이해한다.
- WHERE 절을 활용하여 조건에 맞는 레코드(행)만 정확히 수정하는 방법을 익힌다.
-----------------------------------------------------------------------------------------------------------------
1.UPDATE 구문이란?
UPDATE구문은 테이블의 기존 데이터를 수정할 때 사용하는 SQL 명령어입니다.
기본 구조:
UPDATE 테이블명
SET 컬럼1 = 값1, 컬럼2 = 값2, ............
WHERE 조건;
설명
-SET: 변경하고 싶은 컬럼과 새 값을 지정
-WHERE : 어떤 행을 수정할지 지정( 생략 시 모든 행이 수정 됨 -> 주의)
-실수 방지를 위해 UPDATE 전에 SELECT로 조건을 확인하는 것이 좋음
예시
UPDATE`order` --> order은 지금 MySQL에서 예약어로 설정되어 있기에 그냥 사용 불가 `order` 백키 사용후 가능
SET qyantity = 5
WHERE id = 1; -------> id 가 1인 주문의 수량을 5로 변경
2. 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');
3. UPDATE 실습 예제
◆ 단일 조건 수정
-- 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 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(20);
-- 수량이 1 이하이고, 상품이 '감바스'안 경우 주소를 '서울시 강남구'로 설정
UPDATE `order`
SET address = '서울시 강남구'
WHERE quantity <= 1 AND product_name = '초밥';
도전 과제
-- 도전 과제
-- (id, order_name, product_name, quantity, order_date)
-- 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. 문제 스스로 하나 만들어서 풀어보기
-- 성이 김씨인 사람의 주소를 '경기도 수원시'로 바꿔주세요 그리고 그 사람들의 주문 상품명을 '삼다수'로 변경해주세요
select *
from `order`
where order_name like '김%';
update`order`
set address = '경기도 수원시',product_name = '삼다수'
where order_name like '김%';
-- 4.*) 주소값이 null이면 주소를 서울시 송파구로 변경하시오
select *
from `order`
where address is not null;
update`order`
set address = '서울시 송파구'
where address is null;
-- 수량이 3보다 낮거나 같고, 성이 '김'으로 시작하는 주문자들의 주소를 '경상남도 김해시'로 수정
select *
from `order`
where quantity <= 3 and order_name like '김%';
update`order`
set address = '경상남도 김해시'
where quantity <= 3 and order_name like '김%';
-- 성이 김씨가 아니며 수량이 2이하이고 주소가 없는 사람의 주소를 '부산광역시 사상구'로 변경하시오
select *
from `order`
where quantity <= 2 and order_name not like '김%';
update`order`
set address = '부산광역시 사상구'
where quantity <= 2 and order_name not like '김%';
-- 수량이 2이하이고 주문일이 2022년 02월 이면 이름을 콜라로 바꿔주세요
select *
from `order`
where quantity <= 2 and order_date like '2022-02%';
update`order`
set product_name = '콜라'
where quantity <= 2 and order_date like '2022-02%';
-- id 1번과 5번의 주소를 각각 경상도 양산시, 부산시 연제구로 수정한 뒤, 도시 단위가 'OO시 OO구'인 사람을 전체 출력해주세요.
select *
from `order`
where address like ('%시 %구');
update`order`
set address = '경상도 양산시'
where id = 1 ;
update`order`
set address = '부산시 연제구'
where id = 5 ;
5.주의할 점
- WHERE 절을 생략하면 전체 레코드가 수정됨(큰 실수 주의!!)
- 반드시 SELECT * FROM order, 로 결과 확인