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

이미 생성된 MySQL 열에 NOT NULL 제약 조건을 추가하는 방법

개요

이미 생성된 테이블의 열에 NOT NULL 제약 조건을 추가하려면 ALTER TABLE 문을 사용하면 됩니다. 먼저 예제 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
    -> (
    -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName varchar(100)
    -> );
Query OK, 0 rows affected (0.86 sec)

생성된 테이블의 구조를 확인해 보겠습니다.

mysql> desc DemoTable;

위 명령을 실행하면 다음과 같은 결과가 출력됩니다.

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| StudentId   | int(11)      | NO   | PRI | NULL     | auto_increment |
| StudentName | varchar(100) | YES  |     | NULL     |                |
+-------------+--------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)

출력 결과를 보면 StudentName 열의 Null 항목이 YES로 표시되어 있습니다. 즉, 해당 열에는 아직 NOT NULL 제약 조건이 설정되어 있지 않아 NULL 값을 허용하는 상태입니다.

NOT NULL 제약 조건 추가하기

처음 생성 시 NOT NULL로 지정하지 않았던 "StudentName" 열에 제약 조건을 추가하는 쿼리는 다음과 같습니다.

mysql> alter table DemoTable modify StudentName varchar(100) NOT NULL;
Query OK, 0 rows affected (1.57 sec)
Records: 0 Duplicates: 0 Warnings: 0

MODIFY 절을 활용하면 기존 열의 데이터 타입과 제약 조건을 손쉽게 변경할 수 있습니다. 변경 사항이 정상적으로 적용되었는지 확인하기 위해 테이블 구조를 다시 한번 조회해 보겠습니다.

mysql> desc DemoTable;

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

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| StudentId   | int(11)      | NO   | PRI | NULL     | auto_increment |
| StudentName | varchar(100) | NO   |     | NULL     |                |
+-------------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

결과 확인

변경 후 StudentName 열의 Null 값이 YES에서 NO로 바뀐 것을 확인할 수 있습니다. 이는 해당 열에 더 이상 NULL 값을 저장할 수 없으며, 반드시 유효한 데이터가 입력되어야 함을 의미합니다. 이처럼 ALTER TABLE과 MODIFY 절만 사용하면 테이블을 삭제하고 재생성할 필요 없이 기존 열의 제약 조건을 간편하게 수정할 수 있습니다.