MySQL에서 필드의 기본값(Default Value)을 설정하려면 DEFAULT 키워드를 사용합니다. 테이블 생성 시점에 지정할 수도 있고, 이미 만들어진 테이블에 ALTER TABLE 문으로 나중에 추가할 수도 있습니다.
1. 테이블 생성
먼저 예제로 사용할 테이블을 생성합니다.
mysql> create table DemoTable -> ( -> Age int -> ); Query OK, 0 rows affected (0.58 sec)
2. 기본값 설정하기
다음 쿼리를 사용하면 Age 필드의 기본값을 18로 설정할 수 있습니다.
mysql> alter table DemoTable MODIFY Age int default 18; Query OK, 0 rows affected (0.25 sec) Records: 0 Duplicates: 0 Warnings: 0
3. 테이블 구조 확인
DESC 명령어로 테이블 구조를 확인하여 기본값이 제대로 적용되었는지 검증할 수 있습니다.
mysql> desc DemoTable;
출력 결과
+-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | Age | int(11) | YES | | 18 | | +-------+---------+------+-----+---------+-------+ 1 row in set (0.00 sec)
출력 결과를 보면 Default 열에 18이 표시된 것을 확인할 수 있습니다. 이는 이제 값을 지정하지 않고 레코드를 삽입하면 자동으로 18이 저장된다는 의미입니다.
4. 레코드 삽입 및 기본값 동작 확인
이제 INSERT 명령어로 레코드를 삽입해 보겠습니다. 아래 예제에서는 두 개의 레코드를 값 없이 삽입했는데, 이 경우 해당 필드에는 설정한 기본값인 18이 자동으로 저장됩니다.
mysql> insert into DemoTable values(19); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(20); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.11 sec)
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable;
출력 결과
+------+ | Age | +------+ | 19 | | 18 | | 20 | | 18 | +------+ 4 rows in set (0.00 sec)
결과를 보면 값 없이 삽입된 두 개의 레코드가 모두 18로 저장된 것을 확인할 수 있습니다. 이는 앞서 DEFAULT 18로 기본값을 설정했기 때문입니다.
정리
MySQL에서 기본값 설정은 다음과 같은 상황에서 매우 유용합니다.
- 레코드 삽입 시 특정 필드의 값을 생략해도 일관된 데이터가 유지됩니다.
- NOT NULL 제약 조건과 함께 사용하면 NULL 입력 오류를 방지할 수 있습니다.
- 회원 가입일, 상태 코드 등 항상 초기값이 필요한 컬럼 관리에 활용됩니다.
참고로 MySQL 8.0부터는 DEFAULT (expression) 형태로 함수나 표현식을 기본값으로 사용할 수도 있으므로, 더욱 유연한 스키마 설계가 가능합니다.