為什麼不應該在 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)

更新於: 2019-07-30

711 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.