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

MySQL에서 테이블 열(VARCHAR)을 NULL 허용으로 변경하는 방법

MySQL에서 기존 테이블의 열을 NULL 값을 허용하도록 변경하려면 ALTER 명령어와 함께 CHANGE 절을 사용하면 됩니다. 기본 문법은 다음과 같습니다.

ALTER TABLE 테이블명 CHANGE 열이름 열이름 데이터타입 NULL DEFAULT NULL;

여기서 핵심은 열 이름을 두 번 지정한다는 점입니다. CHANGE 절은 원래 열 이름 변경을 위한 것이지만, 같은 이름을 반복해서 사용하면 데이터 타입이나 NULL 여부 등 열의 속성만 수정할 수 있습니다.

1. 예제 테이블 생성

먼저 실습에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1356
    -> (
    -> FirstName varchar(30)
    -> );
Query OK, 0 rows affected (0.56 sec)

2. 열을 NULL 허용으로 변경

위에서 소개한 문법을 적용하여 FirstName 열을 NULL 값을 허용하도록 변경합니다.

mysql> alter table DemoTable1356 change FirstName FirstName varchar(30) NULL DEFAULT NULL;
Query OK, 0 rows affected (0.17 sec)
Records: 0  Duplicates: 0  Warnings: 0

변경이 완료되면 이제 해당 열에는 NULL 값뿐만 아니라 아무 값도 입력하지 않은 상태(빈 값)로도 레코드를 삽입할 수 있습니다.

3. 레코드 삽입하기

INSERT 명령어를 사용해 몇 개의 레코드를 추가해 보겠습니다. 일반 값, 빈 값, 그리고 명시적인 NULL 값을 모두 포함했습니다.

mysql> insert into DemoTable1356 values('Adam');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1356 values('John');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1356 values();
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1356 values('Bob');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1356 values(NULL);
Query OK, 1 row affected (0.24 sec)

4. 결과 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable1356;

실행 결과는 다음과 같습니다.

+-----------+
| FirstName |
+-----------+
| Adam      |
| John      |
| NULL      |
| Bob       |
| NULL      |
+-----------+
5 rows in set (0.00 sec)

출력 결과를 보면 세 번째 행과 다섯 번째 행에 NULL 값이 정상적으로 저장된 것을 확인할 수 있습니다. 이처럼 ALTER TABLE ... CHANGE 구문을 활용하면 기존 테이블 구조를 유지한 채 특정 열의 NULL 허용 여부를 손쉽게 변경할 수 있습니다.