【SQL进阶】【REPLACE/TIMESTAMPDIFF/TRUNCATE】Day01:增删改操作
一、插入记录
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);
参考答案:
插入时,置空,可以自增【无需指定列名】
【间隔50分钟,可以直接使用+ INTERVAL 50 minute,无需手动计算
INSERT INTO exam_record VALUES (null,1001,9001,'2021-09-01 22:11:12','2021-09-01 22:11:12' + INTERVAL 50 minute,90), (null,1002,9002,'2021-09-04 07:01:02',null,null);
2、数据备份导入新表【查到的数据插入】
插入的是具体数据还是查出来的数据【用不同的符号表示】
INSERT INTO exam_record_before_2021(uid,exam_id,start_time,submit_time,score) -- VALUE用于填具体值,无具体值不用加 SELECT uid,exam_id,start_time,submit_time,score FROM exam_record WHERE submit_time < '2021-01-01 00:00:00'
3、插入id可能存在的记录
方式:使用REPLACE代替INSERT
REPLACE INTO examination_info VALUES(null,9003,'SQL','hard',90,'2021-01-01 00:00:00');
二、更新记录
1、更新某一字段
UPDATE examination_info SET tag='Python' WHERE tag='PYTHON'
2、更新多个属性【用逗号】
注意:判空条件为IS NULL,日期为<
UPDATE exam_record SET submit_time='2099-01-01 00:00:00', score=0 WHERE submit_time IS NULL AND start_time<'2021-09-01 00:00:00'
三、删除记录
1、删除时间间隔小于5分钟
思路:timestampdiff后大前小
DELETE FROM exam_record WHERE timestampdiff(minute,start_time,submit_time)<5 AND score<60
2、删除开始作答时间最早的3条记录[LIMIT]
DELETE FROM exam_record WHERE submit_time IS NULL OR TIMESTAMPDIFF(minute,start_time,submit_time)<5 ORDER BY start_time LIMIT 3
3、删除后重置自增主键
清空数据并重建表结构
TRUNCATE exam_record