【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