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

MySQL 기존 테이블 열에서 NOT NULL 제약 조건을 제거하는 방법

ALTER TABLE 문을 사용하면 기존 테이블의 특정 열에 설정된 NOT NULL 제약 조건을 간단히 제거할 수 있습니다. 이 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.

예시

먼저 'test123'이라는 테이블의 'ID' 열에 NOT NULL 제약 조건이 설정되어 있다고 가정해 보겠습니다. DESCRIBE 명령어로 현재 테이블 구조를 확인하면 다음과 같습니다.

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

'ID' 열의 Null 항목이 NO로 표시되어 있는데, 이는 해당 열에 NOT NULL 제약 조건이 적용되어 있다는 의미입니다. 이제 이 제약 조건을 제거하려면 다음과 같이 ALTER TABLE ... MODIFY 구문을 사용합니다.

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

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

위 결과 집합을 보면 'ID' 열의 Null 값이 NO에서 YES로 변경된 것을 확인할 수 있습니다. 이는 NOT NULL 제약 조건이 성공적으로 제거되었음을 의미합니다.

NULL 키워드 생략하기

참고로 위 쿼리에서 MODIFY 키워드 뒤에 오는 NULL 키워드는 선택 사항입니다. MySQL에서는 열 정의에 NULL 또는 NOT NULL을 명시하지 않으면 기본적으로 NULL이 허용되기 때문에, 다음과 같은 쿼리 역시 동일한 결과를 얻습니다.

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

다만 주의할 점은, MODIFY 구문 사용 시 데이터 타입(INT)까지 함께 지정해야 한다는 것입니다. 열 이름만 변경하는 것이 아니라 전체 열 정의를 다시 작성하는 방식이기 때문입니다. 따라서 실무에서는 기존 열의 데이터 타입과 속성을 정확히 확인한 후 쿼리를 작성하는 것이 안전합니다.