注意事项:字段要与值一一对应。
字段名可以省略,默认所有列;
datetime插入要加引号。因为录入值的类型和字段的类型要一致或兼容;
字段和值的个数必须一致。不能出现一行记录5个值,另外一行6个值的情况;
如果写了字段,即使是空值也不能空着,用null代替;
时间的计算:系统计算,最好不要人工计算。
如果不指定列名,这种方法有以下缺点:
方式1:写字段名
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)
方式2:不写字段名
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)
方式3:不写字段名,时间自增
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)
方式4:不写字段名,自动计算时间
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)
第一个字段是自增的key,可以使用0或者null或者default,自增id默认从1开始。
以上是普通插入。
从另一个表导入,也就是复制表:INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]
INSERT INTO
exam_record_before_2021(uid, exam_id, start_time, submit_time, score)
SELECT uid, exam_id, start_time, submit_time, score FROM exam_record
WHERE YEAR(submit_time) < 2021