MySQL 열의 기본값이란?
MySQL에서 새로운 레코드를 삽입할 때 특정 열에 값이 지정되지 않으면 자동으로 들어가는 값을 기본값(Default Value)이라고 합니다. 기본값을 설정하려면 DEFAULT 키워드를 사용하면 됩니다.
기본값은 테이블을 생성할 때 함께 지정할 수도 있고, 이미 만들어진 테이블에 ALTER TABLE 문으로 나중에 추가할 수도 있습니다. 이번 글에서는 후자의 방법을 예제와 함께 단계별로 살펴보겠습니다.
1. 예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성합니다.
mysql> create table DemoTable758 (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName varchar(100)
);
Query OK, 0 rows affected (0.66 sec)
위 쿼리는 자동 증가(AUTO_INCREMENT) 기본키인 Id와 문자열 타입의 FirstName 두 개의 열을 가진 테이블을 만듭니다.
2. ALTER TABLE로 기본값이 있는 열 추가하기
이제 ALTER TABLE 문과 DEFAULT 키워드를 사용해 기본값이 설정된 새로운 열을 추가해 보겠습니다.
mysql> alter table DemoTable758 add column Colors ENUM('RED','GREEN','BLUE','ORANGE','YELLOW') DEFAULT 'YELLOW';
Query OK, 0 rows affected (0.44 sec)
Records: 0 Duplicates: 0 Warnings: 0여기서는 색상 목록을 정의한 ENUM 타입의 Colors 열을 추가하고, 기본값을 'YELLOW'로 지정했습니다. 이렇게 하면 이후 데이터 삽입 시 Colors 값이 명시되지 않아도 자동으로 'YELLOW'가 저장됩니다.
3. 테이블 구조 확인하기
DESC 명령으로 테이블 구조를 확인하여 기본값이 제대로 적용되었는지 검증할 수 있습니다.
mysql> desc DemoTable758;
실행 결과는 다음과 같습니다.
+-----------+----------------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------------------------------------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| FirstName | varchar(100) | YES | | NULL | |
| Colors | enum('RED','GREEN','BLUE','ORANGE','YELLOW') | YES | | YELLOW | |
+-----------+----------------------------------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
출력 결과에서 Colors 열의 Default 항목이 YELLOW로 표시된 것을 확인할 수 있습니다.
4. 데이터 삽입 후 기본값 동작 확인하기
이제 실제로 레코드를 삽입하면서 기본값이 어떻게 적용되는지 살펴보겠습니다. 첫 번째 INSERT 문에서는 Colors 값을 생략했는데, 이 경우 기본값인 'YELLOW'가 자동으로 저장됩니다.
mysql> insert into DemoTable758(FirstName) values('John');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable758(FirstName,Colors) values('Carol','RED');
Query OK, 1 row affected (0.17 sec)두 번째 INSERT 문에서는 Colors 값을 직접 'RED'로 지정했기 때문에 기본값 대신 지정한 값이 저장됩니다.
5. 전체 레코드 조회하기
SELECT 문으로 테이블의 모든 데이터를 조회해 결과를 확인합니다.
mysql> select *from DemoTable758;
실행 결과는 다음과 같습니다.
+----+-----------+--------+
| Id | FirstName | Colors |
+----+-----------+--------+
| 1 | John | YELLOW |
| 2 | Carol | RED |
+----+-----------+--------+
2 rows in set (0.00 sec)
정리
- MySQL에서 열의 기본값은
DEFAULT키워드로 설정합니다. - 테이블 생성 시(
CREATE TABLE) 또는 이후(ALTER TABLE ... ADD COLUMN) 모두 지정 가능합니다. - INSERT 시 해당 열의 값이 생략되면 기본값이 자동으로 저장됩니다.
- 명시적으로 다른 값을 입력하면 기본값 대신 그 값이 저장됩니다.
기본값을 잘 활용하면 데이터 일관성을 유지하고, 필수 입력 누락으로 인한 오류를 줄일 수 있습니다. 상태 코드, 플래그, 분류 값처럼 정해진 범위의 데이터를 다룰 때 특히 유용합니다.