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

MySQL에서 기존 컬럼에 NOT NULL 제약 조건을 추가하는 방법

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 값이 존재한다면 먼저 해당 값을 처리한 후 제약 조건을 적용해야 한다는 점에 유의하세요.