2010-08-17 25 views
9

爲什麼NOT NULL添加到主鍵字段(主鍵已經沒有空+是唯一的)(MySql)爲什麼NOT NULL添加到主鍵字段? ?

舉例NOT NULL ID字段:

create table student 
(
id int(11) AUTO_INCREMENT NOT NULL, 
name varchar(255), 
PRIMARY KEY(id) 
) 

而不只是:

create table student 
(
id int(11) AUTO_INCREMENT, 
name varchar(255), 
PRIMARY KEY(id) 
) 

編輯: 我添加AUTO_INCREMENT。

回答

12

它們是相同的。主鑰自動獲得NOT NULL

+0

soo爲什麼peaple添加NOT NULL? – Yosef 2010-08-17 14:12:45

+0

@Yosef這只是一個風格問題。並且'mysqldump'在轉儲表時添加這個'NOT NULL',因爲在mysql中允許NULL。 – 2010-08-17 15:44:49

3

NULL不等同於NULL(作爲NULL表示未知或不存在的值),所以你會被允許有一個具有NULL的ID,即使有/唯一約束定義主鍵的多條記錄,因此,使用NOT NULL。那就是如果MySql甚至允許你在一個可爲空的字段上定義一個主鍵。

此外,由於主鍵通常用於其他表中的外鍵,因此具有一個或多個NULL值無效。

+1

'PRIMARY KEY'上的'NULL'違反ISO標準,並被視爲mysql中的一個錯誤:http://bugs.mysql.com/bug.php?id=390。見http://en.wikipedia.org/wiki/Unique_key爲NOT NULL的理由 – 2010-08-17 15:47:03

5

你在問,爲什麼人們在不需要的時候添加NOT NULL呢?我想,這是很好的風格。並向讀者明確說明。