Study/DB

[MySQL] UPDATE 데이터 수정 기본 사용법

 

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 Safe Updates 위치
MySQL Workbench Safe Updates 위치

체크를 해제한 후 MySQL Workbench를 껐다가 켜면 됩니다.

 

함수 사용 결과값으로 수정

계산식이나 함수의 결과 값으로 수정할 수 있습니다.

# 함수의 결과 값으로 수정
update tb_1
set address = concat(address, '111');

함수 결과로 UPDATE
함수 결과로 UPDATE

 

읽으면 좋은 글

[MySQL] UPDATE JOIN - 다른 테이블의 값을 참조하여 수정하는 방법

 

[MySQL] UPDATE JOIN - 다른 테이블의 값을 참조하여 수정하는 방법

데이터를 수정하고 싶을 때 UPDATE 구문을 사용합니다. 조건에 맞는 데이터만 수정하고자 한다면 UPDATE 구문에 WHERE 절을 추가해서 사용하면 됩니다. 만약 조건에 해당하는 컬럼이 다른 테이블에

priming.tistory.com