SQL NOT NULL 非空约束

时间:2018-11-15 17:50:17  来源:igfitidea点击:

在本教程中,我们将学习如何使用SQL NOT NULL约束(非空约束)来防止向列插入NULL空值。

NOT NULL约束用于阻止将空值NULL插入到字段列中。在数据库世界中,NULL表示未知或丢失的信息。

当一个NOT NULL约束应用于一个列时,如果您试图向该列插入一个NULL值或从该列更新NULL值,那么数据库引擎将拒绝该更改并报错。

创建SQL NOT NULL约束

创建NOT NULL约束的最常见方法是通过CREATE TABLE语句中的列定义进行创建。

例如,下面的语句创建了一个名为authors的新表:

CREATE TABLE authors(
  author_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  author_name VARCHAR(40) NOT NULL,
  bio VARCHAR(400) NULL
)

我们对author_id和author_name两列应用了NOT NULL约束。

如果您想要给一个现有表的列添加一个NOT NULL约束,则必须使用ALTER TABLE语句,如下所示:

ALTER TABLE table
ALTER COLUMN column NOT NULL;

例如,在Microsoft SQL Server中,我们可以这样为bio列中添加一个NOT NULL约束:

ALTER TABLE authors
ALTER COLUMN BIO VARCHAR(400) NOT NULL;

而在MySQL中的语法是:

ALTER TABLE authors
MODIFY BIO VARCHAR(400) NOT NULL;

在Oracle中的语法是:

ALTER TABLE authors MODIFY bio NOT NULL

删除SQL NOT NULL约束

要删除现有的NOT NULL约束,同样是使用ALTER TABLE语句。

例如,要删除bio列上的NOT NULL约束,可以使用以下语句:

在SQL SERVER中:

ALTER TABLE authors 
ALTER COLUMN bio varchar(400) NULL

在MySQL中:

ALTER TABLE authors
MODIFY BIO VARCHAR(400) NULL;

在Oracle中:

ALTER TABLE authors
MODIFY (bio NULL)