Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 필드를 기본값으로 재설정하는 방법 – DEFAULT 키워드와 DEFAULT() 함수 활용법

MySQL에서는 특정 필드(컬럼)의 값을 테이블에 정의된 기본값(DEFAULT)으로 되돌려야 하는 경우가 종종 있습니다. 예를 들어, 잘못 입력된 데이터를 초기화하거나 특정 조건에 해당하는 레코드의 값을 기본 상태로 복원할 때 유용합니다.

MySQL에서는 이 작업을 수행하는 방법이 크게 두 가지가 있습니다.

  • DEFAULT 키워드를 사용하는 방법
  • DEFAULT() 함수를 사용하는 방법

방법 1: DEFAULT 키워드 사용

UPDATE 문에서 컬럼 값에 DEFAULT 키워드를 직접 지정하면, 해당 컬럼이 테이블 생성 시 정의한 기본값으로 설정됩니다. 기본 문법은 다음과 같습니다.

UPDATE yourTableName
SET yourColumnName = DEFAULT
WHERE yourCondition;

방법 2: DEFAULT() 함수 사용

두 번째 방법은 DEFAULT() 함수를 사용하는 것입니다. 함수의 인자로 컬럼 이름을 전달하면 해당 컬럼의 기본값이 반환되어 적용됩니다.

UPDATE yourTableName
SET yourColumnName = DEFAULT(yourColumnName)
WHERE yourCondition;

예제 테이블 생성

위 두 가지 문법이 실제로 어떻게 동작하는지 확인하기 위해 예제 테이블을 만들어 보겠습니다.

mysql> CREATE TABLE Default_Demo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(20),
-> Age int,
-> Salary float,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.73 sec)

테이블이 생성되었으면 INSERT 명령으로 몇 개의 레코드를 추가합니다.

mysql> INSERT INTO Default_Demo(Name, Age, Salary) VALUES('John', 23, 405.56);
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO Default_Demo(Name, Age, Salary) VALUES('Carol', 25, 1000.98);
Query OK, 1 row affected (0.22 sec)
mysql> INSERT INTO Default_Demo(Name, Age, Salary) VALUES('Larry', 21, 987.24);
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO Default_Demo(Name, Age, Salary) VALUES('Sam', 24, 986.10);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO Default_Demo(Name, Age, Salary) VALUES('Mike', 22, 10000.50);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO Default_Demo(Name, Age, Salary) VALUES('David', 26, 100.45);
Query OK, 1 row affected (0.20 sec)

SELECT 문으로 전체 레코드를 조회해 보겠습니다.

mysql> SELECT * FROM Default_Demo;

실행 결과는 다음과 같습니다.

+----+-------+------+---------+
| Id | Name | Age | Salary |
+----+-------+------+---------+
| 1 | John | 23 | 405.56 |
| 2 | Carol | 25 | 1000.98 |
| 3 | Larry | 21 | 987.24 |
| 4 | Sam | 24 | 986.1 |
| 5 | Mike | 22 | 10000.5 |
| 6 | David | 26 | 100.45 |
+----+-------+------+---------+
6 rows in set (0.00 sec)

방법 1 적용: DEFAULT 키워드로 Age 초기화

이제 Id가 6인 레코드의 Age 컬럼을 DEFAULT 키워드를 사용해 기본값으로 재설정해 보겠습니다.

mysql> UPDATE Default_Demo SET Age = DEFAULT WHERE Id = 6;
Query OK, 1 row affected (0.10 sec)
Rows matched: 1 Changed: 1 Warnings: 0

업데이트 후 테이블 전체를 다시 조회하면 결과를 확인할 수 있습니다.

mysql> SELECT * FROM Default_Demo;
+----+-------+------+---------+
| Id | Name | Age | Salary |
+----+-------+------+---------+
| 1 | John | 23 | 405.56 |
| 2 | Carol | 25 | 1000.98 |
| 3 | Larry | 21 | 987.24 |
| 4 | Sam | 24 | 986.1 |
| 5 | Mike | 22 | 10000.5 |
| 6 | David | NULL | 100.45 |
+----+-------+------+---------+
6 rows in set (0.00 sec)

결과를 보면 Id 6(David)의 Age 컬럼이 기본값인 NULL로 변경된 것을 확인할 수 있습니다. 이 테이블 생성 시 Age 컬럼에 별도의 기본값을 지정하지 않았기 때문에 기본값은 NULL이 됩니다.

방법 2 적용: DEFAULT() 함수로 Salary 초기화

같은 원리로 DEFAULT() 함수를 사용하여 Id가 6인 레코드의 Salary 컬럼을 기본값으로 재설정할 수 있습니다.

mysql> UPDATE Default_Demo SET Salary = DEFAULT(Salary) WHERE Id = 6;
Query OK, 1 row affected (0.21 sec)
Rows matched: 1 Changed: 1 Warnings: 0

변경된 레코드를 다시 조회해 보겠습니다.

mysql> SELECT * FROM Default_Demo WHERE Id = 6;
+----+-------+------+--------+
| Id | Name | Age | Salary |
+----+-------+------+--------+
| 6 | David | NULL | NULL |
+----+-------+------+--------+
1 row in set (0.00 sec)

Salary 컬럼 역시 기본값인 NULL로 성공적으로 업데이트된 것을 확인할 수 있습니다.

정리

MySQL에서 필드를 기본값으로 재설정하는 방법은 DEFAULT 키워드DEFAULT() 함수, 두 가지입니다. 두 방식 모두 결과는 동일하며, 컬럼에 명시적인 기본값이 정의되어 있지 않으면 NULL이 적용됩니다. 만약 컬럼 정의 시 DEFAULT 0처럼 특정 기본값을 지정했다면, 해당 값으로 초기화됩니다. 실무에서는 데이터 초기화나 배치 작업 시 이 문법을 활용하면 코드를 더 간결하게 유지할 수 있습니다.