MySQL에서 이미 존재하는 컬럼에 NOT NULL 제약 조건을 추가하려면 ALTER 명령어를 사용합니다. 이 제약 조건은 사용자가 해당 컬럼에 NULL 값을 입력하는 것을 방지하는 일종의 데이터 유효성 검사 역할을 합니다.
예제 테이블 생성하기
먼저 예제로 사용할 테이블을 만들어 보겠습니다. 테이블 생성에는 CREATE 명령어를 사용합니다.
mysql> create table AddNotNUlldemo -> ( -> name varchar(100) -> ); Query OK, 0 rows affected (0.44 sec)
레코드 삽입하기
테이블에 데이터를 삽입해 보겠습니다.
mysql> insert into AddNotNUlldemo values('John');
Query OK, 1 row affected (0.19 sec)
mysql> insert into AddNotNUlldemo values('Bob');
Query OK, 1 row affected (0.19 sec)
저장된 레코드 확인하기
SELECT 문으로 모든 레코드를 조회합니다.
mysql> select *from AddNotNUlldemo;
실행 결과는 다음과 같습니다.
+------+ | name | +------+ | John | | Bob | +------+ 2 rows in set (0.00 sec)
NOT NULL 제약 조건 추가하기
기존 컬럼에 제약 조건을 추가하는 기본 문법은 다음과 같습니다.
ALTER table 테이블명 modify 컬럼명 데이터타입 제약조건;
이제 위 문법을 실제로 적용해 보겠습니다. 여기서는 name 컬럼에 'not null' 제약 조건을 추가합니다.
mysql> ALTER table AddNotNUlldemo modify name varchar(100) not null; Query OK, 0 rows affected (1.14 sec) Records: 0 Duplicates: 0 Warnings: 0
제약 조건 동작 확인하기
이제 'AddNotNUlldemo' 테이블에는 더 이상 NULL 값을 삽입할 수 없습니다. 앞서 name 컬럼에 'not null' 제약 조건을 설정했기 때문입니다. 만약 NULL 값을 삽입하려고 하면 오류가 발생합니다.
mysql> INSERT into AddNotNUlldemo values(null); ERROR 1048 (23000): Column 'name' cannot be null
오류 메시지를 통해 제약 조건이 정상적으로 적용되었음을 확인할 수 있습니다. 다시 전체 레코드를 조회해 보겠습니다.
mysql> SELECT *from AddNotNUlldemo;
실행 결과는 다음과 같습니다.
+------+ | name | +------+ | John | | Bob | +------+ 2 rows in set (0.00 sec)
이처럼 ALTER TABLE 문과 MODIFY 절을 활용하면 기존 테이블 구조를 변경하지 않고도 특정 컬럼에 NOT NULL 제약 조건을 손쉽게 추가할 수 있습니다. 단, 컬럼에 이미 NULL 값이 존재한다면 먼저 해당 값을 처리한 후 제약 조건을 적용해야 한다는 점에 유의하세요.