创建 MySQL table 列时何时写入 NOT NULL
When to write NOT NULL when creating a MySQL table column
在 mysql 字段创建中写入 "NOT NULL" 有什么区别或好处...
例如,如果我正在创建这样的 table...
CREATE TABLE IF NOT EXISTS game(
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(128) NOT NULL,
description VARCHAR(200) NOT NULL,
PRIMARY KEY(id)
)
在这里,id 和 name 总是有一个值,所以它们的 NOT NULL 就可以了。我明白了。
但是,描述是一个可选字段,因此它可以为空。
那么,在这种情况下,我应该输入 NOT NULL 吗?
NULL 和一个空白字段是 not the same thing(除非,在某些情况下,你是一个脑死亡的 DBMS 咳Oracle咳).
NULL 表示未知或不适用,而空白字段表示众所周知且空白。
这完全取决于你想如何处理字段本身。例如,让我们考虑一下您名字的中间名首字母。如果您不想区分 'unknown' 和 'does not have one',请将列设置为 NOT NULL
并仅使用空白值来表示两者 - 这会稍微简化您的查询。
但是,如果您想向所有没有中间名的客户发送邮件(出于任何奇怪的原因)而不打扰那些您不知道知道他们是否有中间名的客户,您需要能够区分两者 类.
我的意见是,NOT NULL
是针对那些具有依赖关系的字段,例如主键、外键。
我之前在函数(a,b,c,d,e)中工作的内容;没有输入外键值,它执行但 return 没有结果并且 auto_increment 值增加。这不是一个好习惯。如果使用NOT NULL
,当外键值为NULL
时将停止插入,auto_increment值不会增加。
加法
要处理父记录删除,有一个级联操作,或者您可以让它手动更新记录的另一个值。
首先,在你的情况下,你真的不必放NOT NULL,如果你放NOT NULL,当你向你的数据库插入数据时,如果字段使用NOT NULL,它必须要放值然而,对于这个字段,正如 paxdiablo 前面提到的,NULL 并不意味着空白字段,因为空白字段可以是很多 space 或一个 space。无论如何,如果在某个字段中没有强制性的值,你真的不必输入 NOT NULL。(我真的不认为它与 braindead DBMS 或 @paxdiablo 没有任何关系)
在 mysql 字段创建中写入 "NOT NULL" 有什么区别或好处...
例如,如果我正在创建这样的 table...
CREATE TABLE IF NOT EXISTS game(
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(128) NOT NULL,
description VARCHAR(200) NOT NULL,
PRIMARY KEY(id)
)
在这里,id 和 name 总是有一个值,所以它们的 NOT NULL 就可以了。我明白了。 但是,描述是一个可选字段,因此它可以为空。
那么,在这种情况下,我应该输入 NOT NULL 吗?
NULL 和一个空白字段是 not the same thing(除非,在某些情况下,你是一个脑死亡的 DBMS 咳Oracle咳).
NULL 表示未知或不适用,而空白字段表示众所周知且空白。
这完全取决于你想如何处理字段本身。例如,让我们考虑一下您名字的中间名首字母。如果您不想区分 'unknown' 和 'does not have one',请将列设置为 NOT NULL
并仅使用空白值来表示两者 - 这会稍微简化您的查询。
但是,如果您想向所有没有中间名的客户发送邮件(出于任何奇怪的原因)而不打扰那些您不知道知道他们是否有中间名的客户,您需要能够区分两者 类.
我的意见是,NOT NULL
是针对那些具有依赖关系的字段,例如主键、外键。
我之前在函数(a,b,c,d,e)中工作的内容;没有输入外键值,它执行但 return 没有结果并且 auto_increment 值增加。这不是一个好习惯。如果使用NOT NULL
,当外键值为NULL
时将停止插入,auto_increment值不会增加。
加法
要处理父记录删除,有一个级联操作,或者您可以让它手动更新记录的另一个值。
首先,在你的情况下,你真的不必放NOT NULL,如果你放NOT NULL,当你向你的数据库插入数据时,如果字段使用NOT NULL,它必须要放值然而,对于这个字段,正如 paxdiablo 前面提到的,NULL 并不意味着空白字段,因为空白字段可以是很多 space 或一个 space。无论如何,如果在某个字段中没有强制性的值,你真的不必输入 NOT NULL。(我真的不认为它与 braindead DBMS 或 @paxdiablo 没有任何关系)