插入记录的方式

注意事项:字段要与值一一对应。

字段名可以省略,默认所有列;

datetime插入要加引号。因为录入值的类型和字段的类型要一致或兼容;

字段和值的个数必须一致。不能出现一行记录5个值,另外一行6个值的情况;

如果写了字段,即使是空值也不能空着,用null代替;

时间的计算:系统计算,最好不要人工计算。

如果不指定列名,这种方法有以下缺点:

  • 易错性:如果您不小心更改了值的顺序或遗漏了某个值,那么数据可能会被插入到错误的列中。
  • 灵活性较低:如果表结构发生更改(例如,添加、删除或重新排序列),您可能需要修改所有未指定列名的 INSERT 语句。
  • 可读性较差:其他阅读您代码的人可能不知道每个值对应哪个列,除非他们查看表结构。

方式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 

你可能感兴趣的:(SQL碎碎念,mysql)