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

MySQL에서 NULL을 허용하면서 기본값은 빈 문자열로 설정하는 열 추가하는 방법

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 허용 여부와 기본값을 유연하게 제어할 수 있습니다.