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/
发表评论 取消回复