【场景】:插入新数据、批量 【分类】:插入数据、自增ID
分析思路
难点:
1.如何自动计算时间
insert into table(col1, col2,...,coln) values (value1, value2,...,valuen)
不写字段名,需要填充自增ID
- [使用]:0或者null或者default,自增id默认从1开始。
- [使用]:或者没有在自增id中出现的(不重复)数(例如-1,-2),浮点型数据例如3.4,最后显示3,会进行四舍五入。即使定义了int类型,输入‘3’或者浮点型,都会强制转化为int类型,但是输入'a'会报错。具体细节可以看源码。
第一个字段id为什么可以写null? 示例中建表的时候写了id为自增id,而写0或者null或者default或者没有在自增id中出现的(不重复)数(例如-1,-2),系统都会自动填充id。如果建表的时候没有写明是自增id,那么主键一定是不能为空的,这个时候写null就会报错。
按字段名填充,可以不录入id
- [注意]:字段要与值一一对应。
其余注意事项:
-
字段名可以省略,默认所有列;
-
datetime插入要加引号。因为录入值的类型和字段的类型要一致或兼容;
-
字段和值的个数必须一致。不能出现一行记录5个值,另外一行6个值的情况;
-
如果写了字段,即使是空值也不能空着,用null代替;
-
时间的计算:系统计算,最好不要人工计算。
扩展
前往查看:MySQL 插入语句
求解代码
方法一:
写字段名
insert into
exam_record(uid, exam_id, start_time, submit_time, score)
values
(1001, 9001, '2021-09-01 22:11:12', '2021-09-01 23:01:12', 90),
(1002, 9002, '2021-09-04 07:01:02', null, null)
方法二:
不写字段名 + 自增id + 人工算时间
insert into
exam_record
values
(null,1001,9001, "2021-09-01 22:11:12","2021-09-01 23:01:12",90),
(null,1002,9002, "2021-09-04 07:01:02",null,null)
方法三:
不写字段名 + 自增id + 系统算时间使用date_add
insert into
exam_record
values
(default,1001,9001,'2021-09-01 22:11:12',date_add('2021-09-01 22:11:12',interval 50 minute) ,90),
(default,1002,9002,'2021-09-04 07:01:02',default ,default)
方法四:
不写字段名 + 自增id + 系统算时间使用 + interval 50 minute
insert into
exam_record
values
(0,1001,9001,'2021-9-1 22:11:12','2021-9-1 22:11:12' + interval 50 minute,90),
(0,1002,9002,'2021-9-4 7:1:2',null,null)