SQL NOT NULL 约束
在表中,默认情况下,列通常可以接受 NULL 值。然而,如果你希望确保某个列不包含 NULL 值,你需要在该列上添加 NOT NULL 约束/条件。
SQL 中的 NOT NULL
在 SQL 中, NOT NULL 约束用于确保表中的某个列不包含 NULL(空)值,并阻止任何尝试插入或更新包含 NULL 值的行。
通常情况下,如果我们在插入数据时没有为特定列提供值,那么默认情况下会被视为 NULL 值。但是,如果我们在某个列上添加了 NOT NULL 约束,那么在插入数据时必须提供相应列的值,否则操作将失败并显示错误信息。
语法
以下是在创建表时使用 NOT NULL 的基本语法 –
在表上创建 NOT NULL 约束
要在表的列上添加 NOT NULL 约束,只需要在列定义的数据类型后面添加关键字 “NOT NULL”。
示例
首先,让我们使用以下查询语句创建一个名为“ CUSTOMERS ”的表。
让我们使用以下查询语句向上面创建的表中插入一些值 –
下面将创建如下所示的表格−
验证
在SQL中没有特定的查询来显示表的结构。为了做到这一点,我们使用SQL Server中的“sp_help”存储过程来返回关于指定对象的信息,包括列、约束和索引。
现在,让我们使用以下查询显示名为“CUSTOMERS”的表的结构:
正如我们可以在下面的输出中看到的那样,该表格显示了表的列名称、类型以及它们是否可为空的信息。
注意 −上述查询显示了许多包含有关“CUSTOMERS”表的详细信息的表。有关NOT NULL约束的信息,我们仅显示了一个表。
从表中删除NOT NULL约束
在SQL中,要从现有表中的列中删除NOT NULL约束,我们需要使用 ALTER TABLE 语句。使用这个语句,我们可以修改列的定义,即你可以改变现有列的名称、数据类型或约束。
将列的NOT NULL约束删除的一种方式是将其更改为NULL。
语法
以下是SQL中ALTER TABLE语句的语法:
在这里,
- table_name 是包含我们要修改列的表的名称。
- column_name 是具有要移除的NOT NULL约束的列的名称。
- datatype 是列的数据类型。
示例
以下查询试图修改上面创建的CUSTOMERS表的 NAME 列上的约束为NULL –
输出
在执行给定程序时,输出如下所示:
验证
现在,让我们使用以下查询显示名为“CUSTOMERS”的表的结构。
正如我们在下面的输出中所看到的,”NAME” 列已被修改为可为空,这意味着该列允许存在 NULL 值。
在现有表中添加NOT NULL约束
在前面的部分中,我们通过使用ALTER TABLE语句改变列的定义来删除了NOT NULL约束。
同样地,使用ALTER TABLE语句可以在现有表中的列上添加NOT NULL约束。
语法
以下是SQL中使用ALTER TABLE语句向现有列添加NOT NULL约束的语法:
示例
假设之前创建了表 CUSTOMERS ,让我们尝试使用以下查询来修改 ADDRESS 列,使其 不允许 空值。
输出
当我们执行上面的程序时,输出结果如下所示:
验证
如果通过调用 sp_help 过程显示CUSTOMERS表的结构,您会发现地址列上的NULL约束已被删除(修改为NULL)−
如下所示,输出结果中可以看到,”ADDRESS” 列被修改,这意味着该列不允许出现空值 (NOT) 。