MySQL에서 NOT NULL 속성의 새 열 추가하기
MySQL에서 새로운 열을 추가할 때 해당 열이 NULL 값을 가지지 않도록 하려면 DEFAULT 키워드를 사용하지 않고 NOT NULL 제약 조건만 지정하면 됩니다. 사용 문법은 다음과 같습니다.
ALTER TABLE yourTableName ADD COLUMN yourColumnName dataType NOT NULL AFTER yourColumnName;
위 문법을 이해하기 위해 먼저 테이블을 하나 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table AddingColumnDefaultValueNOTNULL
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> FirstName varchar(20),
-> LastName varchar(20),
-> Age int,
-> Address varchar(100),
-> Salary int,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.58 sec)
테이블 구조 확인
이제 테이블 구조를 확인해 보겠습니다. 확인 쿼리는 다음과 같습니다.
mysql> desc AddingColumnDefaultValueNOTNULL;
실행 결과는 다음과 같습니다.
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| FirstName | varchar(20) | YES | | NULL | |
| LastName | varchar(20) | YES | | NULL | |
| Age | int(11) | YES | | NULL | |
| Address | varchar(100) | YES | | NULL | |
| Salary | int(11) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
6 rows in set (0.11 sec)
NOT NULL 열 추가 쿼리 실행
다음은 기본적으로 NULL 값을 허용하지 않는(NOT NULL) 새 열을 추가하는 쿼리입니다.
mysql> alter table AddingColumnDefaultValueNOTNULL add column City varchar(20) NOT NULL after Age;
Query OK, 0 rows affected (2.17 sec)
Records: 0 Duplicates: 0 Warnings: 0
쿼리가 성공적으로 실행되었습니다. 이제 다시 한 번 테이블 구조를 확인해 보겠습니다. 테이블에는 'City'라는 이름의 새로운 열이 추가되었으며, 이 열은 기본적으로 NOT NULL 속성을 갖게 됩니다.
mysql> desc AddingColumnDefaultValueNOTNULL;
실행 결과는 다음과 같습니다.
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| FirstName | varchar(20) | YES | | NULL | |
| LastName | varchar(20) | YES | | NULL | |
| Age | int(11) | YES | | NULL | |
| City | varchar(20) | NO | | NULL | |
| Address | varchar(100) | YES | | NULL | |
| Salary | int(11) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
7 rows in set (0.02 sec)
결과 분석
출력 결과에서 City 필드를 주목해 보세요. Null 열의 값이 NO로 표시되어 있습니다. 이는 City 필드에 NULL 값을 저장할 수 없음을 의미합니다. 즉, ALTER TABLE 문에 NOT NULL 제약 조건만 명시하고 DEFAULT 키워드를 생략하면, 해당 열은 처음부터 NULL을 허용하지 않는 열로 생성됩니다.