MySQL 数值列设置默认值,解决不为空问题(mysql不为空 默认值)

MySQL 数值列设置默认值,解决不为空问题

在 MySQL 中,数值列默认是不允许设置为 NULL 的,这就导致在插入新数据时,如果没有为数值列赋值,就会出现“field ” doesn’t have a default value”的错误提示,使得插入操作失败。

为了解决这个问题,可以通过设置数值列的默认值来规避。MySQL 支持设置默认值作为列的默认值,当插入新数据时,如果没有为该列赋值,就会自动填充默认值,从而避免了不允许 NULL 的限制。

下面通过示例演示如何设置 MySQL 数值列的默认值:

创建一个学生信息表(student):

CREATE TABLE student (
id int(11) NOT NULL,
name varchar(50) NOT NULL,
age int(11) NOT NULL DEFAULT '18',
score int(11) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

在这个表中,有四个字段,分别是 id、name、age 和 score。其中,id、name 和 age 都是数值类型,而 score 是可以为 NULL 的数值类型。

注意到在 age 字段的定义中,有一个 DEFAULT ’18’ 的设定,这就是设置该字段的默认值为 18。当插入新数据时,如果没有为 age 字段赋值,就会自动填充默认值,即18。

下面是一些数据插入的示例:

-- 插入一条完整的数据
INSERT INTO student (id, name, age, score) VALUES (1, 'Tom', 20, 90);

-- 插入一条不带 age 字段的数据
INSERT INTO student (id, name, score) VALUES (2, 'Jack', 80);
-- 查询所有数据
SELECT * FROM student;

此时查询结果如下:

+----+------+-----+-------+
| id | name | age | score |
+----+------+-----+-------+
| 1 | Tom | 20 | 90 |
| 2 | Jack | 18 | 80 |
+----+------+-----+-------+

可以看到,在第二条插入语句中,没有为 age 字段赋值,但是该字段的默认值“18”被自动填充了进去。这就解决了让 age 字段不能为空的问题。

除了在表的定义中设置默认值,还可以使用 ALTER TABLE 语句来修改表结构和设置默认值:

-- 增加默认值
ALTER TABLE student MODIFY COLUMN score int(11) NOT NULL DEFAULT '0';

以上命令表示将 score 字段的定义中的默认值设为 0,这样在插入新数据时,如果没有为 score 字段赋值,就会自动填充0。设置完成后,查询该表的定义可以看到如下结果:

mysql> DESC student;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| age | int(11) | NO | | 18 | |
| score | int(11) | NO | | 0 | |
+-------+--------------+------+-----+---------+----------------+

另外,如果想要删除数值列的默认值,则可以使用如下语句:

-- 删除默认值
ALTER TABLE student ALTER COLUMN age DROP DEFAULT;

以上命令表示将 age 字段的默认值清空,如果在插入新数据时,没有为该字段赋值,则会报错。如果想要继续使用默认值,可以重新执行 ALTER TABLE 语句,把默认值设回去。

总结

通过在 MySQL 中设置数值列的默认值,可以避免因为禁止 NULL 而导致插入新数据失败的问题。通过示例演示了设置数值列中的默认值的过程,同时还介绍了通过 ALTER TABLE 语句来修改表结构和设置默认值的方法。在实际操作中,建议开发者根据需求灵活设置表结构,并且注意默认值的类型与数据类型的匹配。


数据运维技术 » MySQL 数值列设置默认值,解决不为空问题(mysql不为空 默认值)