#yyds干货盘点# MySQL数据库语句进阶--随手笔记
Posted 忆_恒心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# MySQL数据库语句进阶--随手笔记相关的知识,希望对你有一定的参考价值。
前言
最近看完mysql必知必会后。找了一些题目来练习,语句本身不难 但是有练手的意义,主要是要熟悉一下运用的场景。
目的:
- 随手记录了一些常用的命令
- 熟悉应用场景
干货推荐: 墙裂推荐在学SQL语句的时候要多练习,多熟悉一些常用的场景。 推荐牛客网进行刷题。 https://www.nowcoder.com/ta/sql-advanced
语句书写约定:
专有名词均需要大写,自己定义的函数方法为小写
常见的SQL场景
1 插入记录(三)
描述
现在有一套ID为9003的高难度SQL试卷,时长为一个半小时,请你将 2021-01-01 00:00:00 作为发布时间插入到试题信息表examination_info(其表结构如下图),不管该ID试卷是否存在,都要插入成功,请尝试插入它。
REPLACE INTO examination_info
VALUES(NULL, 9003, SQL, hard, 90, 2021-01-01 00:00:00)
普通插入的会报错
Duplicate entry 9003 for key examination_info.exam_id 说明原来的表中已经有了id=9003的试卷
- 关键字NULL可以用DEFAULT替代。
- 掌握replace into···values的用法
replace into 跟 insert into功能类似,不同点在于:replace into 首先尝试插入数据到表中,
- 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据;
- 否则,直接插入新数据。
2 更新字段
请把exam_record表中2021年9月1日之前开始作答的未完成记录全部改为被动完成,即:将完成时间改为2099-01-01 00:00:00,分数改为0
UPDATE exam_record
SET submit_time=2099-01-01 00:00:00,score = 0
WHERE start_time < 2021-09-01 00:00:00and submit_time is NUL
3 删除记录
3.1 时间戳函数
请删除exam_record表中作答时间小于5分钟整且分数不及格(及格线为60分)的记录;
时间戳函数
timestampdif
DELETE FROM exam_record
WHERE timestampdiff(MINUTE,start_time , submit_time) < 5
AND score < 6
3.2 最早的3条记录
请删除exam_record表中未完成作答或作答时间小于5分钟整的记录中,开始作答时间最早的3条记录。
DELETE FROM exam_record
WHERE TIMESTAMPDIFF(minute, start_time, submit_time) < 5
OR submit_time IS NULL
ORDER BY start_time
limit
3.3 TRUNCATE
请删除exam_record表中所有记录,并重置自增主键。
TRUNCATE TABLE exam_recor
- DROP TABLE 清除数据并且销毁表,是一种数据库定义语言(DDL Data Definition Language), 执行后不能撤销,被删除表格的关系,索引,权限等等都会被永久删除。
- TRUNCATE TABLE 只清除数据,保留表结构,列,权限,索引,视图,关系等等,相当于清零数据,是一种数据库定义语言(DDL Data Definition Language),执行后不能撤销。
每天都要进步一点点,立下个FLAG 大家一起加油欧.
后面会一天更新一则随手笔记在博客上欧,觉得有用的小伙伴们 点赞加收藏查看欧~~
加油!
以上是关于#yyds干货盘点# MySQL数据库语句进阶--随手笔记的主要内容,如果未能解决你的问题,请参考以下文章
MySQL性能测试之select&updateFunTester框架#yyds干货盘点#
高频面试java高级进阶之锁?与CAS详解#yyds干货盘点#