MySQL 如何在MySQL INSERT语句中指定默认值?

MySQL 如何在MySQL INSERT语句中指定默认值?

阅读更多:MySQL 教程

背景介绍

在MySQL数据库中,当我们执行INSERT语句往表中插入一条记录时,有时候需要在某些字段上指定默认值。这个默认值可以是一个具体的值,也可以是一个表达式。本文将介绍如何在MySQL INSERT语句中指定默认值。

指定具体默认值

在MySQL中,我们可以在创建表时为每个字段指定默认值,如下所示:

CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT DEFAULT 18,
    gender CHAR(1) DEFAULT 'M',
    email VARCHAR(100) DEFAULT ''
);

上面的语句中,对于字段age、gender和email都指定了默认值。当我们执行INSERT语句时,如果不指定该字段的值,则使用预设的默认值。例如:

INSERT INTO user (name, email) VALUES ('张三', 'zhangsan@example.com');

在这个INSERT语句中,我们只指定了name和email字段的值。因为age和gender字段没有指定值,所以使用了默认值。具体情况如下:

id name age gender email
1 张三 18 M zhangsan@example.com

指定表达式默认值

在MySQL中,我们不仅可以使用具体的值作为默认值,还可以使用表达式。例如,我们想让email字段的默认值为当前时间的字符串形式,可以这样定义表:

CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT DEFAULT 18,
    gender CHAR(1) DEFAULT 'M',
    email VARCHAR(100) DEFAULT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s')
);

上面的语句中,我们使用了MySQL内置函数NOW()获取当前时间,然后使用了函数DATE_FORMAT()格式化为字符串,作为email字段的默认值。

当我们执行INSERT语句时,如果不指定email字段的值,则使用该默认值。例如:

INSERT INTO user (name) VALUES ('李四');

下面是最终的表格结果:

id name age gender email
1 张三 18 M zhangsan@example.com
2 李四 18 M 2022-02-22 23:06:44

可以看到,在第二条记录中,email字段的值为当前时间字符串。

手动指定默认值

有时候我们需要手动指定某个字段的默认值,而不是使用预设的默认值。在MySQL中,我们可以使用关键字DEFAULT来指定该字段的默认值。例如:

INSERT INTO user (name, age, gender, email) VALUES ('王五', DEFAULT, DEFAULT, 'wangwu@example.com');

上面的语句中,我们手动指定了email字段的值,而age和gender字段则使用预设的默认值。下面是最终的表格结果:

id name age gender email
1 张三 18 M zhangsan@example.com
2 李四 18 M 2022-02-22 23:06:44
3 王五 18 M wangwu@example.com

结论

MySQL INSERT语句中指定默认值需要在创建表时指定。我们可以使用具体的值、表达式或手动指定。如果某个字段没有指定值,则将使用预设的默认值。在实际应用中,这样可以大大简化代码,并且保证了数据的一致性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程