Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL NOT NULL을 기본 키 필드에 추가하면 안 되는 이유는 무엇입니까?

<시간/>

기본 키 필드는 자동으로 NOT NULL을 가져오기 때문에 기본 키 필드에 NOT NULL을 추가할 필요가 없습니다. 기본 키는 NOT NULL과 고유 키의 조합입니다.

다음은 기본 키 필드의 데모입니다. 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table NotNullAddDemo
   -> (
   -> Id int AUTO_INCREMENT,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.81 sec)

위의 표에서 기본 키 필드에 NOT NULL을 추가할 필요는 없습니다. MySQL은 내부적으로 이를 NOT NULL로 변환하기 때문입니다. 올바른지 확인하려면 다음 구문을 사용하십시오.

DESC yourTableName;

이제 위의 구문을 확인하여 테이블 설명을 알아보겠습니다.

mysql> desc NotNullAddDemo;

다음은 출력입니다.

+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| Id    | int(11) | NO   | PRI | NULL    | auto_increment |
+-------+---------+------+-----+---------+----------------+
1 row in set (0.07 sec)

Null 컬럼을 보면 NO라는 값이 있는데 이는 NULL 값이 없다는 의미입니다.

NOT NULL을 확인하기 위해 테이블에 일부 NULL 레코드를 삽입해 보겠습니다. 이렇게 하면 NULL 값을 허용하지만 매번 1부터 값을 셉니다. 테이블에 레코드를 삽입하는 쿼리입니다.

mysql> insert into NotNullAddDemo values(NULL);
Query OK, 1 row affected (0.12 sec)
mysql> insert into NotNullAddDemo values(NULL);
Query OK, 1 row affected (0.45 sec)

기본 키에 대해 두 개의 NULL 값을 삽입한 후 값 1을 삽입하려고 하면 오류가 발생합니다. MySQL은 첫 번째 NULL 값을 1로, 두 번째 NULL 값을 2로 계산하는 식으로 하기 때문입니다.

이제 1을 삽입하려고 하면 오류는 다음과 같습니다.

mysql> insert into NotNullAddDemo values(1);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

값 3을 삽입하면 다음을 수락합니다.

mysql> insert into NotNullAddDemo values(3);
Query OK, 1 row affected (0.21 sec)
mysql> insert into NotNullAddDemo values(NULL);
Query OK, 1 row affected (0.18 sec)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다.

mysql> select *from NotNullAddDemo;

다음은 출력입니다.

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
+----+
4 rows in set (0.00 sec)