MySQL中搜索我们一般是使用like关键词来搜索,不过我们还可能遇更加复杂的搜索条件,例如需要正则表达式(写过程序的一般都知道)去寻找的情况, 匹配字符串 匹配字符串是正则表达式最基础的应用。我们先给出一个例子:我们从一个用户表中查询出名字中包含有100数字的用户 SELECT * FROM my_user WHERE `name` REGEXP '100';   我们得到了用户ID为1的用户:小红100 该语句中不同于之前的语句,我们使用REGEXP关键字代表后面为正则表达式 这条语句看起来和LIKE…

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

MySQL在插入完一条数据库后,要知道插入的行的ID 使用来实现,代码如下: INSERT INTO t_table (col1, col2,...) VALUES ('val1', 'val2'...); SELECT LAST_INSERT_ID(); 以上会查询出最后一个insert出来的数据的ID,而且不用担心多用户访问问题,它是根据你的connection(session)来控制的,只会得到你这个连接状态下的最后一个insertId,如果其他人(或者客户端程序)也连着数据库操作,是相互不受影响的。

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

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条评论 556点热度 0人点赞 admin 阅读全文

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

2022-08-13 0条评论 829点热度 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条评论 535点热度 0人点赞 admin 阅读全文

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

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

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

2022-07-22 0条评论 953点热度 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条评论 788点热度 0人点赞 admin 阅读全文

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

2022-06-29 0条评论 715点热度 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条评论 637点热度 0人点赞 admin 阅读全文