Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:使用空值与默认值_Sql_Database_Ms Access_Database Design - Fatal编程技术网

SQL:使用空值与默认值

SQL:使用空值与默认值,sql,database,ms-access,database-design,Sql,Database,Ms Access,Database Design,与默认值相比,在SQL中使用空值的优点和缺点是什么 注:这里有很多类似的问题,但都没有回答我的问题。对我来说,它们有些正交 默认值允许您优雅地发展数据库模式(考虑添加列),而无需修改客户机代码。另外,它们可以节省一些输入,但依赖默认值是不好的 空值就是:nulls。处理时缺少值和巨大的PITA 数据库中的空值是一个系统 值,该值占用 存储,并指示值为 不存在的与空间或空间相对的不存在的 零或任何其他默认值。这个 包含 NULL值表示 此单元格在创建时未知 看看它。允许 空值还允许对行进行排序 插

与默认值相比,在SQL中使用空值的优点和缺点是什么


注:这里有很多类似的问题,但都没有回答我的问题。

对我来说,它们有些正交

默认值允许您优雅地发展数据库模式(考虑添加列),而无需修改客户机代码。另外,它们可以节省一些输入,但依赖默认值是不好的

空值就是:
null
s。处理时缺少值和巨大的PITA

数据库中的空值是一个系统 值,该值占用 存储,并指示值为 不存在的与空间或空间相对的不存在的 零或任何其他默认值。这个 包含 NULL值表示 此单元格在创建时未知 看看它。允许 空值还允许对行进行排序 插入时没有任何值 专栏。有几个优点和缺点 相反,使用空值的缺点 要设置默认值,请执行以下操作:

专业人士

空值没有数据 类型,因此可以插入到任何 数据结构和任何数据库 专栏。另一方面,默认值 另一方面,需要有自己的数据类型 指定和一个默认值 列在另一个列中可能看起来相同 列,但它可能是另一个 类型

NULL通常用于 值是可选的。这是一个方便的地方 用于省略数据输入的方法 未知字段,而不必 实施其他规则,如 在整数中存储负值 字段来表示省略的数据

因为空值只占1 内存空间的位,它们可能是 在优化数据库时非常有用。 使用这些值要多得多 比默认值更有效,例如。 字符的8位和整数 16位

而您的系统需求可能 随时间变化和默认值 类型,则始终为空值 NULL,因此无需更新 数据类型

为表架构分配NOTNULL 还可以帮助进行表验证, 从某种意义上说,该列与 空条件将要求输入一个值 插入。默认值不适用 有这些能力

缺点

空值很容易与空值混淆 空字符串,返回 当出现以下情况时,将为用户提供一个空白值: 挑选出来的。从这个意义上讲,违约是不可能的 值比较容易混淆,并且是 更安全的选项,除非使用默认值 设置为空字符串

如果在 数据库,它们可能会导致设计器 尽可能多的工作和时间 使数据库逻辑更加复杂 复杂的,特别是当有 与中的空值进行了大量比较 地点


来源:

我不知道你为什么要把这些和案例进行比较
null
表示某个列为空/没有值,而当我们不直接在查询中设置某个列时,默认值为该列提供了一些值


也许一些例子可以更好地解释。假设我们有
成员
表。每个成员都有一个ID和用户名。他可能有一个电子邮件地址(但他不必)。此外,每个成员都有一个postCount列(每次用户写文章时都会增加)。因此,电子邮件列可以有一个
null
值(因为电子邮件是可选的),而postCount列是
notnull
,但有默认值
0
(因为当我们创建一个新成员时,他没有任何帖子)。

null值表示该属性不适用或未知。有很多宗教战争在争夺它们是好事还是坏事,但我属于“好事”阵营

在许多情况下,它们通常是区分已知值和未知值所必需的,并且对于那些没有合适的默认值的属性,它们使哨兵值变得不必要

例如,虽然银行余额的默认值可能为零,但移动电话号码的默认值是多少。您可能需要区分“客户没有移动电话”和“客户的移动电话号码(尚未)为人所知”,在这种情况下,一个空白栏是不行的(另外,有一个额外的栏来决定该栏是一个还是另一个不是一个好主意)


默认值只是DBMS在没有明确指定的情况下会放在列中的值。

空值不是。。。价值观


Null表示“没有值”。。。除了数据库方面之外,非值变量或字段的一个重要方面是不可能使用“=”(或“>”,“”,因为在许多情况下,每个变量或字段都有优点和缺点

关于默认值的优点:如果没有提供其他值,则可以将列设置为已知值。例如,在创建布尔列时,我通常会为该列提供默认值(TRUE或FALSE,任何适当的值)并使列不为NULL。这样,我可以确信该列将有一个值,并且它将被设置为适当的

默认值的缺点:不是所有的东西都有默认值

空值的好处:并不是所有的东西都有一个已知的值。例如,当创建一个代表一个人的新行时,我可能没有所有列的值——比如说我知道他们的名字,但不知道他们的出生日期。为出生日期输入默认值是不合适的——人们不喜欢在Ja上得到生日卡如果他们的生日实际上是7月22日,则每年1日(如果这是默认值)

空值的坏处:空值需要小心处理。在大多数建立在关系模型上的数据库中,通常实现的空值是有害的-存在
if myFirstValue = mySecondValue
if (isnull(myFirstValue) and isNull(mySecondValue)) or myFirstValue = mySecondValue
if Nz(myFirstValue) = Nz(mySecondValue, defaultValue)
declare 
  nValue NUMBER;
begin
  IF nValue > 0 THEN
    dbms_output.put_line('nValue > 0');
  ELSE
    dbms_output.put_line('nValue <= 0');
  END IF;

  IF nValue <= 0 THEN
    dbms_output.put_line('nValue <= 0');
  ELSE
    dbms_output.put_line('nValue > 0');
  END IF;
end;
nValue <= 0
nValue > 0