NULL或空字符串--在表示表列中没有数据时,哪一种更好?(我专门使用MySQL,但我认为这是独立于系统的.)与使用另一种相比,使用其中一种有什么主要的优点/缺点,或者仅仅是程序员的偏好?

推荐答案

我强烈反对任何人说无条件使用NULL.允许列为NULL会引入一种额外的状态,如果将列设置为NOT NULL,则不会出现这种状态.如果不需要附加状态,请不要这样做.也就是说,如果你不能找出空字符串和null的含义之间的区别,那么就将列设置为NOT null,并使用空字符串来表示空.用两种不同的方式表达同一件事是个坏主意.

大多数告诉您使用NULL的人还给出了一个示例,其中NULL的含义与空字符串不同.在这些例子中,他们是正确的.

然而,在大多数情况下,NULL是一种不必要的额外状态,只会迫使程序员不得不处理更多情况.正如其他人所提到的,Oracle不允许存在这种额外的状态,因为它将NULL和空字符串视为同一事物(在Oracle中不允许NULL的列中不可能存储空字符串).

Database相关问答推荐

如何在 ubuntu 中使用脚本添加带有连字符的数据库名称

通过 mySQL 命令行直接上传图片

安装 SQL Server Management Studio Express后提示:Cannot open user default database. Login failed.

预测下一个自动插入的行 ID (SQLite)

分布式数据库管理系统 (DDBMS) 中的水平与垂直碎片

数据库模式 - location

如何将 PHP 会话数据保存到数据库而不是文件系统中?

SQLite3 的动态类型

在 sql server 中存储持续时间(时间跨度)

内存数据库和磁盘内存数据库的区别

FOR UPDATE和JOIN的 SQL 语义

PHP 和 MySQL Select 单个值

为什么有人需要内存数据库?

JOOQ 与Hibernate

添加具有初始(但不是默认)值的新列的最佳方法?

在数据库字段中存储数字数组

如何动态更改 Ruby on Rails 中所有模型的 Active Record 数据库?

如何在实体框架中使用字符串属性作为主键

如何以 SYS 身份在 Java 中连接到 Oracle?

SQLite 数据库方案作为实体关系模型