개요
이 글에서는 NOT NULL 제약 조건이 적용된 테이블을 생성한 뒤, ALTER TABLE 문을 사용해 특정 열을 수정하여 NULL 값을 허용하도록 변경하는 방법을 단계별로 살펴봅니다.
NOT NULL 제약 조건이 있는 테이블 생성
먼저 NOT NULL 제약 조건이 설정된 테이블을 만들어 보겠습니다.
mysql> create table AllowNullDemo -> ( -> id int not null -> ); Query OK, 0 rows affected (0.48 sec)
레코드 삽입 및 조회
INSERT 명령을 사용해 레코드를 삽입합니다.
mysql> insert into AllowNullDemo values(); Query OK, 1 row affected, 1 warning (0.19 sec) mysql> insert into AllowNullDemo values(); Query OK, 1 row affected, 1 warning (0.15 sec)
저장된 레코드를 조회해 보겠습니다.
mysql> select *from AllowNullDemo;
실행 결과는 다음과 같습니다. INSERT 명령 실행 시 별도의 값을 지정하지 않았기 때문에 0이 저장되어 표시됩니다.
+----+ | id | +----+ | 0 | | 0 | +----+ 2 rows in set (0.00 sec)
NULL 허용을 위한 열 수정 구문
열이 NULL 값을 허용하도록 수정하는 기본 구문은 다음과 같습니다.
alter table yourTableName modify column yourColumnName datatype;
위 구문을 실제 테이블에 적용해 보겠습니다.
mysql> alter table AllowNullDemo modify column id int; Query OK, 0 rows affected (1.59 sec) Records: 0 Duplicates: 0 Warnings: 0
위 쿼리를 실행하면 해당 열의 NOT NULL 제약 조건이 제거되어, 이후에는 NULL 값을 자유롭게 삽입할 수 있습니다.
mysql> insert into AllowNullDemo values(); Query OK, 1 row affected (0.15 sec)
마지막에 삽입된 값이 실제로 NULL로 저장되었는지 확인하기 위해 레코드를 다시 조회합니다.
mysql> select *from AllowNullDemo;
아래 출력 결과에서 NULL 값이 정상적으로 저장된 것을 확인할 수 있습니다.
+------+ | id | +------+ | 0 | | 0 | | NULL | +------+ 3 rows in set (0.00 sec)
참고: 변경 사항 확인하기
수정이 완료된 후에는 DESCRIBE 명령으로 열의 정의가 올바르게 변경되었는지 확인할 수 있습니다. Null 항목이 YES로 표시되면 해당 열은 NULL 값을 허용하는 상태입니다.
mysql> desc AllowNullDemo; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | id | int | YES | | NULL | | +-------+---------+------+-----+---------+-------+
마무리
위에서 살펴본 것처럼 ALTER TABLE 문과 MODIFY COLUMN 절을 활용하면 MySQL에서 기존 열의 NOT NULL 제약 조건을 손쉽게 제거하고 NULL 값을 허용하도록 설정할 수 있습니다. 스키마 변경 전에는 반드시 데이터 백업을 권장합니다.