UPDATE문은 데이터를 수정할 때 사용하는 구문입니다.
기본 구조
UPDATE [테이블명]
SET [컬럼명] = [수정할 값], [컬럼명] = [수정할 값], ...
WHERE [조건]
UPDATE 구문에서 WHERE 조건을 사용하면 조건에 맞는 데이터만 수정할 수 있습니다.
여러 컬럼을 수정하고자 할 때는 쉼표를 사용해서 여러 컬럼을 연결하면 됩니다.
예제
데이터 준비
예제에 사용할 테이블과 데이터입니다.
# 예제용 테이블 생성
create table tb_1 (
id int(11) not null auto_increment primary key comment 'key',
name varchar(255) not null comment '이름',
address varchar(255) null default '' comment '주소'
);
# 예제용 데이터 등록
insert into tb_1 (id, name, address) values (1, 'Kim', 'Seoul');
insert into tb_1 (id, name, address) values (2, 'Lee', null);
insert into tb_1 (id, name, address) values (3, 'Park', 'Busan');
조건부 수정
UPDATE tb_1
SET address = 'empty'
WHERE address is null;
address 컬럼이 null인 데이터에 대해 address 값을 'empty'로 수정하는 쿼리입니다.
만약 조건이 없다면 모든 address 컬럼의 데이터가 'empty'로 변경됩니다.
만약 이 쿼리를 실행했을 때
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
이런 오류가 발생했다면 다음과 같이 조치하면 됩니다.
set sql_safe_updates = 0;
해당 쿼리를 실행하면 safe update 모드가 해제됩니다.
다만, DB를 재접속하면 풀리기 때문에 유지를 원한다면 MySQL Workbench 자체에서 옵션을 해제해야 합니다.
Edit > Preferences... > SQL Editor > Safe Updates (rejects UPDATEs and DELETEs with no restrictions) 체크 해제
체크를 해제한 후 MySQL Workbench를 껐다가 켜면 됩니다.
함수 사용 결과값으로 수정
계산식이나 함수의 결과 값으로 수정할 수 있습니다.
# 함수의 결과 값으로 수정
update tb_1
set address = concat(address, '111');
읽으면 좋은 글
[MySQL] UPDATE JOIN - 다른 테이블의 값을 참조하여 수정하는 방법