跳至主要內容

非空约束

AkashiNeko原创MySQL约束

非空约束

非空约束(NOT NULL Constraint)用于确保数据库表中的列不接受 NULL 值。当为列添加非空约束后,该列在插入或更新数据时必须提供一个非空值。

关键字 NOT NULL 可以为列设置非空约束,防止在插入或更新数据时将 NULL 值赋给该列。下面的示例中,给 name 列加上非空约束,防止它接受一个 NULL 值。

CREATE TABLE student2 (
    name varchar(64) NOT NULL,
    age int DEFAULT 18
);

INSERT INTO student2 (name,age) VALUES ('Steve', 15);
-- OK
INSERT INTO student2 (name) VALUES ('Alex');
-- OK
INSERT INTO student2 (age) VALUES (20);
-- ERROR 1364 (HY000): Field 'name' doesn't have a default value
INSERT INTO student2 (name,age) VALUES (NULL,20);
-- ERROR 1048 (23000): Column 'name' cannot be null

 











在插入记录时,如果省略被 NOT NULL 约束的列,或试图插入空数据,都是无法正常插入的。

使用 DESC 关键字查看表结构。

mysql> DESC student2;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | varchar(64) | NO   |     | NULL    |       |
| age   | int         | YES  |     | 18      |       |
+-------+-------------+------+-----+---------+-------+

Null 列中,可以看到设置了非空约束的列为 NO,表示该列不允许为空。