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

기존 MySQL 테이블의 열에 NOT NULL 제약 조건을 적용하는 방법

이미 생성된 MySQL 테이블의 특정 열에 NOT NULL 제약 조건을 추가하려면 ALTER TABLE 문을 사용하면 됩니다. 이를 통해 테이블을 삭제하고 다시 만들 필요 없이 기존 열의 NULL 허용 여부를 손쉽게 변경할 수 있습니다.

기본 문법

ALTER TABLE table_name MODIFY column_name datatype NOT NULL;

적용 예시

먼저 NOT NULL 제약 조건이 없는 간단한 테이블을 생성하고, DESCRIBE 명령으로 현재 구조를 확인해 보겠습니다.

mysql> Create table test123(ID INT, Date DATE);
Query OK, 0 rows affected (0.19 sec)

mysql> Describe test123;

+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| ID    | int(11) | YES  |     | NULL    |       |
| Date  | date    | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.04 sec)

위 결과에서 Null 열이 YES로 표시된 것을 확인할 수 있습니다. 즉, 두 열 모두 현재 NULL 값을 허용하고 있습니다.

이제 ALTER TABLE 문을 사용하여 ID 열에 NOT NULL 제약 조건을 적용합니다.

mysql> ALTER TABLE test123 MODIFY ID INT NOT NULL;
Query OK, 0 rows affected (0.54 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> Describe test123;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| ID    | int(11) | NO   |     | NULL    |       |
| Date  | date    | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.06 sec)

결과 확인

변경 후 다시 DESCRIBE로 테이블 구조를 조회하면 ID 열의 Null 값이 NO로 바뀐 것을 볼 수 있습니다. 이는 해당 열에 더 이상 NULL 값을 저장할 수 없음을 의미합니다.

주의 사항

기존 테이블에 이미 NULL 값이 들어 있는 데이터가 존재하는 경우, NOT NULL 제약 조건을 적용하기 전에 먼저 해당 NULL 값을 유효한 값으로 업데이트해야 합니다. 그렇지 않으면 제약 조건 적용 시 오류가 발생할 수 있습니다.