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

MySQL에서 NULL을 허용하지 않는 열(NOT NULL) 설정 및 활용 방법

데이터베이스를 설계할 때 특정 열이 반드시 값을 가져야 한다면 NOT NULL 제약 조건으로 정의해야 합니다. NOT NULL로 선언된 열에는 NULL 값이나 빈 값을 삽입할 수 없으며, 이를 위반하면 MySQL은 오류를 반환합니다.

NOT NULL 제약 조건이 있는 테이블 생성

먼저 일부 열을 NOT NULL로 지정하여 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1895
    (
    Id int NOT NULL,
    FirstName varchar(20),
    LastName varchar(20) NOT NULL
    );
Query OK, 0 rows affected (0.00 sec)

위 예제에서 IdLastName 열은 NOT NULL로 정의되어 있으므로 반드시 값을 입력해야 하며, FirstName 열은 NULL을 허용합니다.

레코드 삽입 시 NOT NULL 제약 조건 확인

INSERT 명령을 사용하여 테이블에 레코드를 삽입해 보겠습니다.

mysql> insert into DemoTable1895 values(100,'John','Smith');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1895 values(NULL,'Chris','Brown');
ERROR 1048 (23000): Column 'Id' cannot be null
mysql> insert into DemoTable1895 values(102,'Carol',NULL);
ERROR 1048 (23000): Column 'LastName' cannot be null
mysql> insert into DemoTable1895 values(103,NULL,'Miller');
Query OK, 1 row affected (0.00 sec)

실행 결과를 살펴보면 다음과 같은 동작을 확인할 수 있습니다.

  • 첫 번째 INSERT: 모든 열에 유효한 값이 있으므로 정상적으로 삽입됩니다.
  • 두 번째 INSERT: NOT NULL로 지정된 Id 열에 NULL을 넣으려 했기 때문에 'Column Id cannot be null' 오류가 발생합니다.
  • 세 번째 INSERT: 마찬가지로 NOT NULL인 LastName 열에 NULL을 넣어 오류가 발생합니다.
  • 네 번째 INSERT: NULL을 허용하는 FirstName 열에만 NULL이 들어갔으므로 정상적으로 삽입됩니다.

저장된 데이터 조회

SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable1895;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-----+-----------+----------+
| Id  | FirstName | LastName |
+-----+-----------+----------+
| 100 | John      |     Smith |
| 103 | NULL      |    Miller |
+-----+-----------+----------+
2 rows in set (0.00 sec)

정리

NOT NULL 제약 조건은 데이터 무결성을 보장하는 중요한 도구입니다. 필수 입력 항목(예: 사용자 ID, 성 등)에 적용하면 잘못된 데이터가 저장되는 것을 사전에 차단할 수 있습니다. 반면 선택 사항인 열은 기본값(default)을 허용하거나 NULL을 허용하도록 설계하는 것이 좋습니다.