数据库中的空值

时间:2009-06-19 09:22:05

标签: rdbms

空值意味着

  1. 没有价值
  2. 不适用,未分配,未知或不可用
  3. 这是真的吗?

12 个答案:

答案 0 :(得分:3)

这完全取决于它的使用环境。 null表示没有值,但其原因将取决于使用它的域。在许多情况下,您列出的项目都是null的有效用途。

答案 1 :(得分:2)

它可能意味着任何这些事情(而且并不总是很明显),这是反对使用空值的一个论据。

请参阅:http://en.wikipedia.org/wiki/Null_(SQL)#Controversy

答案 2 :(得分:1)

From Wikipedia

  

Null是一种特殊的标记   结构化查询语言(SQL)   表示数据值没有   存在于数据库中。介绍   关系数据库的创建者   模型,E。F. Codd,SQL Null服务于   满足所有真实的要求   关系数据库管理系统   (RDBMS)支持表示   “缺少信息,不适用   信息“.Codd也介绍了   使用小写希腊欧米茄(ω)   在数据库中表示Null的符号   理论。 NULL也是SQL保留的   用于标识Null的关键字   特殊标记。

答案 3 :(得分:1)

显然,您拥有null定义的数据库定义,但对于应用程序而言,它可能意味着什么。我曾经在一个奇怪的应用程序(免责声明 - 我没有设计它)上工作,它在联结表中使用null来表示所有选项(据称它是以“节省空间”的方式设计的)。这是用户和角色管理的数据库设计。

在这种情况下,null意味着用户处于所有角色。这是每日WTF的一个。 : - )

与许多人一样,我倾向于避免在现实可能的情况下使用空值。

答案 4 :(得分:1)

null表示数据库中不存在数据值,因此表示缺少信息。

还允许三向真值;真实,虚假和未知。

答案 5 :(得分:1)

SQL语义支持的唯一答案是“未知”。如果它意味着“没有价值”,那么

'Hi there' = NULL

将返回FALSE,但返回NULL。这是因为表达式中的NULL值表示未知值,并且就系统知道而言,未知值很可能是“Hi there”。

答案 6 :(得分:0)

NULL表示字段没有设置值,或者已重新设置为NULL。 未知或不可用。

注意,在查找NULL值时,不要在where子句中使用'=',请使用'is',例如:

select * from User where username is NULL;

select * from User where username = NULL;

答案 7 :(得分:0)

NULL,在关系模型中,表示未知。它是一个标记,而不是值出现在SQL中的任何值。

答案 8 :(得分:0)

Null意味着什么,未知,没有价值。

这并不意味着无法使用或适用。

答案 9 :(得分:0)

Null是一行中列的可测试状态,但它本身没有值。

以示例:

int只能是......,0,1,2,3,...而且也是NULL。

日期时间只能是有效日期......而且也是NULL。

一个位只能是0或1 ...而且也是NULL。

varchar可以是字符串......也是NULL。

看模式?

您可以创建一个NOT NULL列,以便强制列获取值。

答案 10 :(得分:0)

NULL SQL关键字用于表示缺失值或不适用于关系表的值

答案 11 :(得分:0)

全部:-) 如果要在字段中添加语义含义,请添加ENUM

create TABLE myTable
  (
  myfield varchar(50)
  myfieldType enum ('OK','NoValue','InApplicable','Unassigned','Unknown','Unavailable') NOT NULL
  )