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 문법도 사용할 수 있으므로, 상황에 맞게 활용하시기 바랍니다.