개요
MySQL에서 테이블의 특정 열(컬럼)에 있는 모든 값을 한 번에 동일한 값으로 변경하려면 UPDATE 명령어를 사용하면 됩니다. WHERE 절 없이 UPDATE 문을 실행하면 해당 열의 전체 행이 지정한 값으로 일괄 수정됩니다.
기본 문법
UPDATE yourTableName SET yourColumnName = yourValue;
위 문법에서 yourTableName은 대상 테이블 이름, yourColumnName은 변경할 열 이름, yourValue는 설정할 값입니다. WHERE 조건을 생략하면 테이블의 모든 행에 적용됩니다.
예제 테이블 생성
실제 동작을 확인하기 위해 예제 테이블을 먼저 생성해 보겠습니다.
mysql> CREATE TABLE setAllValuesDemo (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(20),
-> Amount int
-> );
Query OK, 0 rows affected (0.64 sec)위 쿼리로 Id, Name, Amount 세 개의 열을 가진 테이블이 생성되었습니다.
샘플 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> INSERT INTO setAllValuesDemo(Name, Amount) VALUES('John', 2345);
Query OK, 1 row affected (0.22 sec)
mysql> INSERT INTO setAllValuesDemo(Name, Amount) VALUES('Carol', 47586);
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO setAllValuesDemo(Name, Amount) VALUES('Bob', 95686);
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO setAllValuesDemo(Name, Amount) VALUES('David', 95667);
Query OK, 1 row affected (0.15 sec)현재 데이터 확인
SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.
mysql> SELECT * FROM setAllValuesDemo;
실행 결과는 다음과 같습니다.
+----+-------+--------+ | Id | Name | Amount | +----+-------+--------+ | 1 | John | 2345 | | 2 | Carol | 47586 | | 3 | Bob | 95686 | | 4 | David | 95667 | +----+-------+--------+ 4 rows in set (0.00 sec)
단일 열의 모든 값 일괄 변경
이제 Amount 열의 모든 값을 10500으로 변경하는 UPDATE 쿼리를 실행합니다.
mysql> UPDATE setAllValuesDemo SET Amount = 10500; Query OK, 4 rows affected (0.20 sec) Rows matched: 4 Changed: 4 Warnings: 0
실행 결과를 보면 4개 행이 모두 매칭되었고, 4개 행이 성공적으로 변경된 것을 확인할 수 있습니다.
변경 결과 검증
다시 SELECT 문을 실행하여 변경 사항을 확인합니다.
mysql> SELECT * FROM setAllValuesDemo;
모든 행의 Amount 값이 10500으로 변경된 것을 볼 수 있습니다.
+----+-------+--------+ | Id | Name | Amount | +----+-------+--------+ | 1 | John | 10500 | | 2 | Carol | 10500 | | 3 | Bob | 10500 | | 4 | David | 10500 | +----+-------+--------+ 4 rows in set (0.00 sec)
주의사항
WHERE 절 없이 UPDATE 문을 실행하면 테이블의 모든 행이 영향을 받습니다. 따라서 실무 환경에서는 실행 전에 반드시 백업을 하거나, SELECT 문으로 먼저 대상 데이터를 확인한 후 진행하는 것이 안전합니다. 또한 MySQL에서 safe update 모드가 활성화되어 있다면 WHERE 절 없는 UPDATE 문이 거부될 수 있으니 참고하세요.