MySQL NOT NULL 제약 조건이란?
MySQL에서 NOT NULL 제약 조건은 테이블의 특정 열(컬럼)에 NULL 값이 저장되지 않도록 제한하는 규칙입니다. NOT NULL 제약 조건이 적용된 열에는 NULL 값을 삽입하거나 업데이트할 수 없으며, 해당 열에는 반드시 유효한 데이터가 들어가야 합니다.
특히 주목할 점은 NOT NULL이 테이블 전체 단위가 아니라 개별 열 단위(컬럼 레벨)로만 선언된다는 것입니다. 즉, 여러 열 중 일부에만 NOT NULL을 적용할 수 있고, 나머지 열은 NULL 값을 허용하도록 설정할 수 있습니다.
테이블 생성 시 NOT NULL 필드 선언하기
특정 필드를 NOT NULL로 지정하려면 CREATE TABLE 문에서 해당 열을 정의할 때 NOT NULL 키워드를 함께 작성하면 됩니다.
예제
mysql> Create table Employee(ID Int NOT NULL, First_Name Varchar(20), Last_name Varchar(20), Designation Varchar(15)); Query OK, 0 rows affected (0.59 sec)
위 쿼리에서는 'Employee' 테이블의 'ID' 필드에 NOT NULL 제약 조건을 적용했습니다. 이제 'ID' 열에는 절대 NULL 값을 저장할 수 없으며, 새로운 행을 추가할 때 반드시 유효한 ID 값을 제공해야 합니다.
반면 First_Name, Last_name, Designation 열에는 NOT NULL이 적용되지 않았기 때문에 이 열들은 NULL 값을 가질 수 있습니다.
DESCRIBE로 제약 조건 확인하기
NOT NULL 제약 조건이 올바르게 적용되었는지는 DESCRIBE 문으로 확인할 수 있습니다. 아래 결과에서 'ID' 필드의 Null 항목이 NO로 표시된 것을 볼 수 있는데, 이는 해당 열이 NULL 값을 허용하지 않음을 의미합니다.
mysql> DESCRIBE Employee\G
*************************** 1. row ***************************
Field: ID
Type: int(11)
Null: NO
Key:
Default: NULL
Extra:
*************************** 2. row ***************************
Field: First_Name
Type: varchar(20)
Null: YES
Key:
Default: NULL
Extra:
*************************** 3. row ***************************
Field: Last_name
Type: varchar(20)
Null: YES
Key:
Default: NULL
Extra:
*************************** 4. row ***************************
Field: Designation
Type: varchar(15)
Null: YES
Key:
Default: NULL
Extra:
4 rows in set (0.03 sec)정리
- NOT NULL 제약 조건은 열에 NULL 값이 저장되는 것을 금지합니다.
- 테이블 전체가 아닌 개별 열(컬럼 레벨)에만 선언할 수 있습니다.
CREATE TABLE문에서 열 정의 시 NOT NULL 키워드를 붙여 선언합니다.DESCRIBE문의 Null 항목(NO/YES)으로 적용 여부를 확인할 수 있습니다.