Spa*_*rky 54
NULL表示您不必为字段提供值...
NOT NULL表示您必须为字段提供值.
例如,如果要为系统构建注册用户表,则可能需要确保始终使用值(即NOT NULL)填充user-id,但可选的配偶名称字段可以保留为空(空值)
Mar*_*rkR 13
我会建议
如果空值偶然输入它们,那么对NULL为空的字段没有任何意义的空可能会引入错误.使用NOT NULL会阻止这种情况.
NULL字段的最常见原因是您有一个外键字段,它是"零或一"关系的选项,即并不总是链接.
如果你发现你有一个包含许多列的表,其中许多列可以是NULL,那么它开始听起来像反模式,考虑垂直分区在你的应用程序上下文中是否更有意义:)
NULL还有另一个有用的用法 - 使索引中的所有列为NULL将停止为该行创建的索引记录,从而优化索引; 您可能只想索引一小部分行(例如,对于仅设置为1%的"活动"标志或其他内容) - 使得以通常为NULL的列开头的索引可以节省空间并优化该索引.
OMG*_*ies 10
NULL和NOT NULL有什么区别?
创建表或向表中添加列时,需要使用NULL或指定列值选项NOT NULL.NOT NULL表示该列不能具有NULL任何记录的值; NULLmeans NULL是允许值(即使列具有外键约束).因为NULL它不是一个值,你可以看到为什么有些人称之为可选性 - 因为数据库表要求为了有一个列,所以表中的每个记录都必须有一个列的实例.
什么时候应该使用它们?
这取决于您的业务规则.
通常,您希望尽可能多的列,NOT NULL因为您希望确保数据始终存在.
NOT NULL意味着一列中不能包含该NULL值-相反,如果在为该列插入一行时未指定任何内容,则它将使用指定的默认值(或者,如果未指定默认值,则该类型的默认值为MySQL)。
并非如此的字段NOT NULL可能具有其值NULL(实际上意味着缺少/未知/未指定的值)。NULL行为与正常值不同,请参阅此处以获取更多信息。
| 归档时间: | 
 | 
| 查看次数: | 37665 次 | 
| 最近记录: |