MySQL中使用函数,给时间日期增加时间间隔,相应的,就是减少时间间隔。 date_add示例如下: select now(); -- 当前时间 select date_add(now(), interval 1 day); -- 加1天 select date_add(now(), interval 1 hour); -- 加1小时 select date_add(now(), interval 1 minute); -- 加1分钟 select date_add(now(), interval 1 second…

2022-08-17 0条评论 368点热度 0人点赞 admin 阅读全文

有时候需要在MySQL服务器层面去查找sql的执行记录,例如有多个应用的时候,希望看到MySQL的SQL执行情况。 执行SQL命令: SHOW VARIABLES LIKE 'general%'; mysql> SHOW VARIABLES LIKE 'general%'; +------------------+---------------------------------+ | Variable_name | Value | +------------------+------------------…

2022-08-13 0条评论 613点热度 0人点赞 admin 阅读全文

MySQL中select查询出来结果希望按照某个字段的内容且指定的顺序,之前有类似的需求,按照指定内容排序,详见:https://blog.terrynow.com/2021/02/23/sql-order-by-specfic-value/ 另一种情况,比如要查一组数据in某一个数组中,但是按照指定数组的顺序排序,例如: select * from table where id in (1,5,4,3) 我们希望出来的结果,也是按照id给定的顺序:1,5,4,3来排序 MySQL可可以使用order by fie…

2022-08-10 0条评论 382点热度 0人点赞 admin 阅读全文

应用程序报错,但是没有记录相关的SQL日期,所以想要查MySQL服务器最近的错误SQL来进一步排查。 在performance_schema中语句时间记录表中针对每一条语句的执行状态都记录了较为详细的信息,其中就包含了执行错误信息。 一、查看语句记录功能是否开启 记录语句信息的表一般为performance_schema中的四张表,分别为 events_statements_current,默认记录每个线程最近的一条SQL信息 events_statements_history,默认记录每个线程最近的十条SQL信息…

2022-07-27 0条评论 594点热度 0人点赞 admin 阅读全文

开发中需要导出数据库结构说明文档交付给客户或者拿出来讨论等,如果手工去写的话,还是比较费劲的,不过可以使用screw来自动生成,如下图所示,是利用screw自动生成的数据库说明文档。 一、数据库支持 MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB 二、配置 1、pom文件 引入screw核心包,HikariCP数据库连接池,HikariCP号称性能最出色的数据库连接池。 <!-- screw核心 --> <dependency>…

2022-07-22 0条评论 711点热度 0人点赞 admin 阅读全文

例如做一些剔重操作(利用自己表某些字段group出来的信息,再进行更新或者删除) update t_table set is_delete=1 where id not in ( select min(id) from t_table group by email ) 会报错提示如下信息: 1093 - You can't specify target table 't_test' for update in FROM clause 原因就是MySQL不允许同时更新和删除一张表,也就是你不能以一个查询的结果为条件 …

2022-07-12 0条评论 523点热度 0人点赞 admin 阅读全文

日常开发,运维中,经常会出现误删数据的情况。误删数据的类型大致可分为以下几类: 使用 delete 误删行 使用 drop table 或 truncate table 误删表 使用 drop database 语句误删数据库 使用 rm 命令误删整个 MySQL 实例。 不同的情况,都会有其优先的解决方案: 针对误删行,可以通过 Flashback 工具将数据恢复 针对误删表或库,一般采用通过 BINLOG 将数据恢复。 而对于误删 MySQL 实例,则需要我们搭建 HA 的 MySQL 集群,并保证我们的数据跨…

2022-06-29 0条评论 524点热度 0人点赞 admin 阅读全文

MySQL下对数据表数据做分组,并显示每一组的第一行(具体怎么算每组的第一行数据,可以根据order by某一字段) 思路:可以先用 查出ID列表然后作为子查询条件再去select原表,具体SQL如下(这个办法需要一个主键ID(primary_key)或唯一键unique_key): SELECT column1, column2 FROM table1 WHERE id IN ( SELECT min(id) FROM table1 GROUP BY column1 ); 另一种办法如下(不需要主键或者uniqu…

2022-06-28 0条评论 460点热度 0人点赞 admin 阅读全文

MySQL中生成随机数的函数是,该函数还可以接收一个seed数(种子),返回一个0-1之间的小数(0<=x<1,大于等于0,小于1)。例如: mysql> SELECT RAND(); RAND(): 0.4768667244136955 (生成随机数) mysql> SELECT RAND(7); RAND(): 0.40161898397060014 (生成随机数,种子数是7) mysql> SELECT RAND(-1.1); RAND(): 0.5774947773455593…

2022-06-16 0条评论 481点热度 0人点赞 admin 阅读全文

最近在使用Docker下的MySQL的时候,遇到一个问题,就是发现它的时区不对(因为之前都是习惯了+800的),在做一个SQL查询的时候,发现时区并不是东八区(CST即China Standard Time),例如: select * from t_test where create_date>now() 本来类似这样的记录是能查出来的,但是现在却没有,进一步调试,发现出来的时间比北京时间少了8个小时。 如何在Docker下安装MySQL的文章,请查看:https://blog.terrynow.com/20…

2022-06-07 0条评论 679点热度 0人点赞 admin 阅读全文