MySQL에서 기존 열의 제약 조건을 NOT NULL로 변경하려면 MODIFY 명령어를 사용하면 됩니다. 아래는 기본 문법입니다.
ALTER TABLE 테이블이름 MODIFY 기존열이름 기존데이터타입 NOT NULL;1. 테이블 생성하기
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
-> (
-> UserId int NOT NULL AUTO_INCREMENT,
-> UserFirstName varchar(100),
-> UserLastName varchar(100),
-> UserEmailId varchar(100),
-> UserPassword varchar(100),
-> PRIMARY KEY(UserId)
-> );
Query OK, 0 rows affected (0.91 sec)위 테이블에는 UserFirstName, UserLastName, UserEmailId, UserPassword 열이 모두 NULL 값을 허용하는 상태로 생성되었습니다.
2. 열에 NOT NULL 제약 조건 적용하기
이제 특정 열의 제약 조건을 NOT NULL로 변경하는 쿼리입니다. 여기서는 UserFirstName 열을 대상으로 진행합니다.
mysql> alter table DemoTable modify UserFirstName varchar(100) NOT NULL;
Query OK, 0 rows affected (2.13 sec)
Records: 0 Duplicates: 0 Warnings: 0참고: MODIFY를 사용할 때는 데이터 타입까지 함께 명시해야 합니다. 타입을 생략하면 오류가 발생하므로, 원래 열의 데이터 타입(varchar(100) 등)을 그대로 유지하면서 NOT NULL만 추가하는 방식으로 작성해야 합니다.
3. 변경 결과 확인하기
DESC 명령어를 사용하면 해당 열에 NOT NULL 제약 조건이 실제로 적용되었는지 확인할 수 있습니다.
mysql> desc DemoTable;출력 결과
아래 출력 결과를 보면 UserFirstName 열의 Null 항목이 NO로 표시된 것을 확인할 수 있습니다. 이는 해당 열에 더 이상 NULL 값이 허용되지 않음을 의미합니다.
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| UserId | int(11) | NO | PRI | NULL | auto_increment |
| UserFirstName | varchar(100) | NO | | NULL | |
| UserLastName | varchar(100) | YES | | NULL | |
| UserEmailId | varchar(100) | YES | | NULL | |
| UserPassword | varchar(100) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
5 rows in set (0.17 sec)정리
MySQL에서 열에 NOT NULL 제약 조건을 추가하는 과정은 다음과 같습니다.
ALTER TABLE ... MODIFY구문을 사용하여 열 정의를 수정합니다.- 수정 시 반드시 기존 데이터 타입을 함께 지정해야 합니다.
DESC명령어로 Null 컬럼 값이 NO로 변경되었는지 확인합니다.
이 방법을 활용하면 데이터 무결성을 강화하고, 필수 입력 값이 누락되는 것을 데이터베이스 수준에서 방지할 수 있습니다.