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

MySQL 테이블 컬럼 기본값(Default) 변경 방법 완벽 가이드

MySQL에서 테이블 컬럼의 기본값을 변경하려면 ALTER TABLE 문과 함께 CHANGE 명령어를 사용할 수 있습니다. 기본 문법은 다음과 같습니다.

ALTER TABLE 테이블명 CHANGE 컬럼명 컬럼명 데이터타입 NOT NULL DEFAULT 기본값;

예제 테이블 생성하기

위 문법을 실제로 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다. 아래 쿼리를 실행합니다.

mysql> create table DefaultDemo
   -> (
   -> ArrivalTime timestamp
   -> );
Query OK, 0 rows affected (0.65 sec)

테이블이 정상적으로 생성되었습니다. 이제 DESC 명령어로 테이블 구조를 확인해 보겠습니다.

mysql> desc DefaultDemo;

실행 결과는 다음과 같습니다. 현재 ArrivalTime 컬럼의 기본값이 NULL로 설정되어 있는 것을 확인할 수 있습니다.

+-------------+-----------+------+-----+---------+-------+
| Field       | Type      | Null | Key | Default | Extra |
+-------------+-----------+------+-----+---------+-------+
| ArrivalTime | timestamp | YES  |     | NULL    |       |
+-------------+-----------+------+-----+---------+-------+
1 row in set (0.11 sec)

컬럼 기본값 변경하기

이제 CHANGE 명령어를 사용하여 해당 컬럼의 기본값을 CURRENT_TIMESTAMP로 변경해 보겠습니다. 아래와 같이 쿼리를 작성합니다.

mysql> ALTER TABLE DefaultDemo CHANGE ArrivalTime ArrivalTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
Query OK, 0 rows affected (1.71 sec)
Records: 0 Duplicates: 0 Warnings: 0

쿼리가 성공적으로 실행되어 컬럼 속성이 변경되었습니다. 여기서 주의할 점은 CHANGE 뒤에 기존 컬럼명을 두 번 작성해야 한다는 것입니다. 첫 번째는 현재 컬럼명, 두 번째는 새로 지정할 컬럼명입니다. 이름을 그대로 유지하려면 동일하게 입력하면 됩니다.

기본값 적용 여부 확인하기

변경된 기본값이 실제로 적용되는지 확인하기 위해 값을 지정하지 않고 INSERT 문을 실행해 보겠습니다.

mysql> insert into DefaultDemo values();
Query OK, 1 row affected (0.15 sec)

그다음 저장된 레코드를 조회합니다.

mysql> select * from DefaultDemo;

실행 결과는 다음과 같습니다. 값을 직접 입력하지 않았음에도 현재 시간이 자동으로 기록된 것을 확인할 수 있습니다.

+---------------------+
| ArrivalTime         |
+---------------------+
| 2018-12-07 11:31:00 |
+---------------------+
1 row in set (0.00 sec)

정리

MySQL에서 컬럼 기본값을 변경하는 핵심 절차는 다음과 같습니다.

DESC 테이블명;으로 현재 컬럼 구조 확인 → ② ALTER TABLE ... CHANGE 문으로 기본값 수정 → ③ INSERT 후 SELECT로 기본값 적용 여부 검증

참고로 MySQL 8.0 이상 버전에서는 컬럼명을 반복하지 않아도 되는 ALTER TABLE ... ALTER COLUMN ... SET DEFAULT 문법도 사용할 수 있으므로, 상황에 맞게 활용하시기 바랍니다.