NOT NULL 约束的语法

NOT NULL 约束是一种 SQL 约束,用于指定列中的数据不能为空。在创建表时,可以为每个列指定 NOT NULL 约束,以保证数据的完整性和可靠性。

语法

在创建表时指定 NOT NULL 约束的语法如下:

```

CREATE TABLE table_name (

column1 datatype NOT NULL,

column2 datatype NOT NULL,

...

)

```

在 ALTER TABLE 语句中,可以使用 ADD CONSTRAINT 子句来添加 NOT NULL 约束:

```

ALTER TABLE table_name

ADD CONSTRAINT constraint_name

CHECK(column_name IS NOT NULL);

```

使用方法

NOT NULL 约束用于确保列中的数据不为空。当尝试插入空值时,如果该列具有 NOT NULL 约束,则会引发错误。因此,为了避免错误和不完整的数据,应该在创建表时为每个列指定 NOT NULL 约束。

下面是一个示例表格的创建,其中包含了一个具有 NOT NULL 约束的列:

```

CREATE TABLE customer (

id INT NOT NULL,

name VARCHAR(50) NOT NULL,

age INT,

email VARCHAR(100) NOT NULL,

PRIMARY KEY (id)

);

```

在上面的代码中,id、name 和 email 列都具有 NOT NULL 约束,因此必须在插入数据时为它们提供值。age 列没有 NOT NULL 约束,因此可以为空。

如果尝试在不提供值的情况下向具有 NOT NULL 约束的列中插入数据,则会抛出以下错误:

```

ERROR 1136 (21S01): Column count doesn't match value count at row 1

```

在 ALTER TABLE 语句中添加 NOT NULL 约束:

```

ALTER TABLE customer

MODIFY name VARCHAR(50) NOT NULL;

```

上面的代码将表格 customer 中的 name 列修改为具有 NOT NULL 约束。这意味着以后不允许将 NULL 值插入到该列中。

案例说明

在实际应用中,NOT NULL 约束经常用于确保表中的关键列不为空。例如,在用户注册表单中,需要确保用户名和电子邮件地址不为空,并且在数据库中的相应列具有 NOT NULL 约束。

以下是一个示例表格,其中包含了一些具有 NOT NULL 约束的列:

```

CREATE TABLE users (

id INT NOT NULL,

username VARCHAR(50) NOT NULL,

password VARCHAR(100) NOT NULL,

email VARCHAR(100) NOT NULL,

created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (id)

);

```

在上面的代码中,id、username、password 和 email 列都具有 NOT NULL 约束,因此必须在插入数据时为它们提供值。created_at 列也具有 NOT NULL 约束,并指定了默认值 CURRENT_TIMESTAMP,因此如果创建记录时未提供 created_at 的值,则会使用当前时间作为默认值。

当试图插入空值时,例如以下语句:

```

INSERT INTO users (id, username, password, email, created_at) VALUES (1, 'tommy', NULL, 'tommy@example.com', CURRENT_TIMESTAMP);

```

则会返回以下错误:

```

ERROR 1048 (23000): Column 'password' cannot be null

```

这是因为 password 列具有 NOT NULL 约束,因此不能为空。

总结

NOT NULL 约束用于确保表格中的列不为空,以保持数据的完整性和可靠性。在创建表格时应该为每个列指定 NOT NULL 约束,以避免错误和不完整的数据。如果尝试插入空值,则会引发错误。同时,可以使用 ALTER TABLE 语句添加或修改 NOT NULL 约束。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/

点赞(2) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部