在
创建表
的时候,我们需要定义表的字段,每个字段都有一些属性,比如说是否有默认值、是否允许为空、是不是主键等等。
这些约束字段的属性,可以让字段的值更符合我们的预期,也会为以后的数据查询和更新提供便利。
比如说,我们在定义字段的时候添加了默认值,那在插入数据的时候,如果我们没有主动指定这个字段的值(比如 Java 程序中),数据库就会使用默认值帮我们自动填充。
像
技术派实战项目
中的文章详情表,我们为 id 字段设置了 NOT NULL、AUTO_INCREMENT、COMMENT 等属性。
那接下来,就来一起看看 MySQL 字段的常用属性都有哪些吧。
默认值(DEFAULT)是指在插入数据的时候,如果没有指定这个字段的值,那就会使用默认值。
我们创建这样一张表,包含了 varchar、int、datetime 等字段类型,每个字段都设置了默认值。
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT '沉默王二',
`age` int(11) DEFAULT 18,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在插入数据的时候,如果没有指定 name、age、create_time 字段的值,那就会使用默认值。
INSERT INTO `user` (`id`) VALUES (1);
可以看到,插入数据的时候,我们只指定了 id 字段的值,其他字段都省略了,但 MySQL 自动帮我们填充了默认值。
-
DEFAULT '沉默王二'
:指定了 name 字段的默认值为“沉默王二”。
-
DEFAULT 18
:指定了 age 字段的默认值为 18。
-
DEFAULT CURRENT_TIMESTAMP
:指定了 create_time 字段的默认值为当前时间。
那假如我们没有指定默认值,又没有主动插入数据,那这个字段的值会是什么呢?
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255),
`age` int(11),