상세 컨텐츠

본문 제목

[MySQL] UPDATE 구문과 조건절

MySQL/MySQL 기본

by 미로910 2024. 6. 4. 17:27

본문

UPDATE 구문은 이미 존재하는 테이블의 레코드를 수정하는 명령문이다.

이 구문은 WHERE 절을 포함하여 사용된다. WHERE 절을 사용하여 특정 조건에 해당하는 레코드만 수정할 수 있다.

UPDATE 구문은 다음과 같은 형식으로 작성한다.

💡
UPDATE [테이블 이름]
SET [칼럼 이름1] = [새로운 값1], [칼럼 이름2] = [새로운 값2], ...
WHERE [조건];

위의 구문에서 SET 절은 테이블의 특정 칼럼 값을 변경하는 부분이다. WHERE 절은 조건에 해당하는 레코드만 변경할 수 있도록 필터링 한다.

예를 들어, student 테이블에서 grade 가 2 인 학생들의 major 값을 '전자공학과' 로 변경하려면 다음과 같이 작성할 수 있다.

💡
UPDATE student
SET major = '전자공학과'
WHERE grade = 2;

UPDATE 구문은 매우 강력하므로 사용할 때는 주의가 필요하다.

특히 WHERE 절을 사용할 때는 조건을 신중하게 선택하여야 한다.

 

샘플 데이터

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');

🔔 문제

drop table `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');

select * from `order`;

-- UPDATE 구문을 사용할 때는 천천히 WHERE 확인하기 
-- 1. id가 1인 주문의 상품 수량을 5개로 수정 

UPDATE `order` 
SET quantity = 5
WHERE  id = 1; 


-- 2. id가 3인 사람에 메뉴를 감바스로 수정해주세요 
UPDATE `order`
SET  product_name = '감바스'
WHERE id = 3; 

-- 3. id가 5인 주문의 주문 일자를 '2024-05-31'로 수정
UPDATE `order` 
SET order_date = '2024-05-31'
WHERE id = 5;


-- 주문 수량이 2개 이상이고, 상품명이 '피자'인 주문의 수령인 이름을 '김철수'로 수정
UPDATE `order`
SET order_name = '김철수'
WHERE quantity >= 2 
	AND product_name = '피자';


-- 주문 날짜가 '2022-02-28'이고, 상품명이 '초밥'인 주문의 주문 수량을 5개로 수정 
UPDATE `order` 
SET quantity = 5
WHERE order_date = '2022-02-28' 
	  and product_name = '초밥';


-- SQL 
	-- DDL(Data Definition Language) : 테이블의 구조를 변경할 때 사용됩니다.
	-- DML(정의)  
	-- DCL(정의) 

-- 테이블의 구조를 변경
alter table `order` add column address varchar(100); 

-- '경기도 성남시'로 수정 ?? <-- 컬럼이 존재 하지 않음 !! 
-- 주문 수량이 1개 이하이고, 상품명이 '감바스'인 주문의 수령인 주소를 '부산시 진구'로 수정
update `order` 
set address = '부산시 진구'
where quantity = 1 and product_name = '감바스';


select * from `order`;

관련글 더보기