随笔分类 - mysql
摘要:一、背景 在最近的一次版本发布之后,在后台日志中发现了如下错误信息: 从日志里我们可以看出来,提示sql语句里的ORDER BY与DISTINCT不兼容; 检查后发现sql语句中有类似如下格式的语句,确实我们在使用order by的同时又使用了distinct SELECT distinct req
阅读全文
摘要:1.下载安装包 官网下载安装包,官网链接 https://downloads.mysql.com/archives/community/,选择相应的版本下载。 下载地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-l
阅读全文
摘要:初始化测试数据 我们有如下一张 product 订单表,相关字段分别为产品名称,订单数量,订单时间。 DDL: -- -- Table structure for product -- DROP TABLE IF EXISTS `product`; CREATE TABLE `product` (
阅读全文
摘要:① 同一年的情况下计算工作日函数 CREATE DEFINER=`root`@`%` FUNCTION `WORKDAYSONEYEAR`(`datefrom` datetime,`dateto` datetime) RETURNS int(20) NO SQL BEGIN declare days
阅读全文
摘要:背景 今天准备调试一个很久没打开的项目时,页面无法展示信息,经排查是因为数据库停止,查看运行状态发现以下异常。 Jun 15 15:30:58 sccprocduat10 systemd[1]: Started LSB: start and stop MySQL. Jun 15 15:30:59 s
阅读全文
摘要:前言 遇到Mysql死锁问题,我们应该怎么排查分析呢?之前线上出现一个insert on duplicate死锁问题,本文将基于这个死锁问题,分享排查分析过程,希望对大家有帮助。 死锁案发还原 表结构: CREATE TABLE `song_rank` ( `id` int(11) NOT NULL
阅读全文
摘要:背景 最近需要向数据库中插入5w+数据,但是在插入的过程中需要先根据某个字段进行判断,如果数据库中已经存在记录则进行更新,否则插入。通常这种情况下,我们会在代码中编写一条查询语句,查询数据库中是否存在相关记录。然后通过if条件判断是进行更新还是进行插入。这种情况对于数据量不多的时候是感觉不到很大的差
阅读全文
摘要:在使用MySQL中datetime格式自动更新特性时,我们应该明确一点,datetime格式设置默认值为当前时间和自动更新时间是从MySQL5.6版本之后开始支持的。此前我们都是使用timestamp格式来实现自动更新时间。 一、下面是datetime与timestamp两者的简单对比 格式 时间范
阅读全文
摘要:导出数据库文件 常用命令 mysqldump -u 用户名 -p 数据库名 数据表名 > 导出的文件名和路径 导出整个数据库 mysql导出数据库一个表,包括表结构和数据mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名和路径 如果需要导出数据中多张表的结构及数据时,表名用空格隔
阅读全文
摘要:表中数据 MySQL中or和and的用法 SELECT * from student WHERE id = 1 or id = 2 AND age = 20; -- 查询结果是id = 2且age = 20或者id=1 SELECT * from student WHERE (id = 1 or i
阅读全文
摘要:MySQL 的 sql_mode 合理设置 sql_mode 是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题。sql_mode 常用
阅读全文
摘要:-- 脱敏姓名 UPDATE wb_person_message SET `name`=(if(LENGTH(name)>6,CONCAT(LEFT(name,1), '**' ),CONCAT(LEFT(name,1), '*' ))); -- 脱敏身份证号 UPDATE wb_person_me
阅读全文