이미 데이터가 있는 테이블에 NOT NULL 컬럼을 추가하려면 ALTER TABLE ... ADD COLUMN ... NOT NULL을 쓰되, 기본값(DEFAULT)을 지정하거나 기존 행에 값이 채워져 있어야 합니다.
테이블 생성
mysql> CREATE TABLE DemoTable (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(20)
-> );
Query OK, 0 rows affected (0.60 sec)
NOT NULL 컬럼 추가
mysql> ALTER TABLE DemoTable ADD COLUMN StudentAge INT NOT NULL; Query OK, 0 rows affected (0.52 sec) Records: 0 Duplicates: 0 Warnings: 0
데이터 삽입 시도
mysql> INSERT INTO DemoTable(StudentName,StudentAge) VALUES('Chris',21);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable(StudentName,StudentAge) VALUES('David',23);
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable(StudentName,StudentAge) VALUES('Mike',NULL);
ERROR 1048 (23000): Column 'StudentAge' cannot be null
데이터 조회
mysql> SELECT * FROM DemoTable;
+-----------+-------------+------------+ | StudentId | StudentName | StudentAge | +-----------+-------------+------------+ | 1 | Chris | 21 | | 2 | David | 23 | +-----------+-------------+------------+ 2 rows in set (0.00 sec)
중요: 기존 행이 있는 테이블에 NOT NULL 컬럼을 추가할 때 DEFAULT 값을 주지 않으면 MySQL 8.0+에서는 에러가 발생할 수 있습니다. ADD COLUMN StudentAge INT NOT NULL DEFAULT 0처럼 기본값을 주거나, 먼저 NULL 허용으로 추가 후 데이터 채우고 MODIFY COLUMN ... NOT NULL로 변경하세요.