MySQL에서 NULL 값을 허용하면서도 기본값은 NULL이 아닌 빈 문자열('')로 설정된 열을 만들고 싶다면 DEFAULT 키워드를 사용하면 됩니다.
기본 문법
ALTER TABLE yourTableName ADD yourColumnName yourDataType NULL DEFAULT '';
예제 테이블 생성하기
먼저 예제를 위한 테이블을 생성해 보겠습니다. 다음 쿼리를 실행합니다.
mysql> CREATE TABLE AllowNullDefaultNotNullDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> UserName varchar(20),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.65 sec)NULL 허용 + 빈 문자열 기본값 열 추가
이제 ALTER TABLE 문으로 새로운 열을 추가합니다. 이 열은 NULL 값을 허용하면서, 별도의 값이 지정되지 않으면 빈 문자열이 기본값으로 설정됩니다.
mysql> ALTER TABLE AllowNullDefaultNotNullDemo ADD UserAddress varchar(20) NULL DEFAULT ''; Query OK, 0 rows affected (1.04 sec) Records: 0 Duplicates: 0 Warnings: 0
테이블 구조 확인하기
DESC 명령어를 사용해 테이블 구조가 제대로 적용되었는지 확인할 수 있습니다.
mysql> DESC AllowNullDefaultNotNullDemo;
실행 결과는 다음과 같습니다.
+-------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | UserName | varchar(20) | YES | | NULL | | | UserAddress | varchar(20) | YES | | | | +-------------+-------------+------+-----+---------+----------------+ 3 rows in set (0.17 sec)
결과를 보면 UserAddress 열의 Null 컬럼 값은 'YES'(NULL 허용)이고, Default 컬럼은 빈 값으로 설정된 것을 확인할 수 있습니다.
레코드 삽입하고 결과 확인하기
이제 다양한 방식으로 데이터를 삽입해 보겠습니다. 아래 세 가지 경우를 비교해 보세요.
- 명시적으로 값을 지정하는 경우
- NULL을 직접 삽입하는 경우
- 아무 값도 지정하지 않는 경우(기본값 적용)
mysql> INSERT INTO AllowNullDefaultNotNullDemo(UserAddress) VALUES('US');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO AllowNullDefaultNotNullDemo(UserAddress) VALUES(NULL);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO AllowNullDefaultNotNullDemo() VALUES();
Query OK, 1 row affected (0.12 sec)삽입된 UserAddress 열의 값을 조회해 보겠습니다.
mysql> SELECT UserAddress FROM AllowNullDefaultNotNullDemo;
실행 결과는 다음과 같습니다.
+-------------+ | UserAddress | +-------------+ | US | | NULL | | | +-------------+ 3 rows in set (0.00 sec)
결과 정리
위 결과에서 확인할 수 있듯이, 이 열은 다음과 같이 동작합니다.
- 'US' 삽입 시: 지정한 값 그대로 저장됩니다.
- NULL 명시적 삽입 시: 열이 NULL을 허용하므로 NULL이 저장됩니다.
- 값 미지정 시: DEFAULT '' 설정에 따라 빈 문자열이 저장됩니다.
이처럼 NULL DEFAULT '' 옵션을 활용하면 NULL 허용 여부와 기본값을 유연하게 제어할 수 있습니다.