Database
文章平均质量分 75
zijikanwa
这个作者很懒,什么都没留下…
展开
-
通过sql对比两个表的一致性
文章目录一. 背景二. 对比方案1. 对比两表的数据量是否一致2. MINUS对比参考资料一. 背景项目中需要对两张结构一样的表进行对比,看两张表的数据是否一致。二. 对比方案1. 对比两表的数据量是否一致select count(*) from t1;select count(*) from t2;2. MINUS对比说明:用minus 对两张表做减法计算t1表-t2表后的行;计算t2表-t1表后的行;判断1和2的返回内容是否都为空t1-t2select *原创 2021-12-07 17:26:48 · 6389 阅读 · 0 评论 -
SQL 一行转多行的处理方案
一. 背景和问题背景:处理数据时,需要将一行中的某列数据根据分隔符转换到多行,为了实现该需求,找了一些解决方案,记录如下。问题概述二. MySQL中一行转多行1. 技术点mysql自带表:mysql.help_topicsql的字符串函数:substring_index()1.1 mysql.help_topic概述:mysql.help_topic是数据库mysql的一个表,该表提供查询帮助主题给关键字的详细内容。说明:一行转多行的这条sql语句其实跟help_topic表没原创 2021-12-07 17:08:57 · 25748 阅读 · 1 评论 -
MySQL的聚合函数 GROUP_CONCAT()
文章目录一.背景二. MySQL中聚合函数 GROUP_CONCAT()的使用2.1 多行变一列2.2 扩展:多行变多列三. Oracle中聚合函数 WM_CONCAT()的使用1. 函数概述2. 使用示例参考资料一.背景今天在数据开发项目时,遇到一个需求,需要把多行数据以某几个字段为键,将同列或多列的多行数据拼成一行数据。二. MySQL中聚合函数 GROUP_CONCAT()的使用概述:MySQL中,聚合函数GROUP_CONCAT()用指定分隔符连接字符串。通常使用多行变一列:原创 2021-12-02 17:38:35 · 5495 阅读 · 0 评论 -
MySQL的on duplicate key update实现(批量)插入或更新操作
文章目录一. 背景二. `on duplicate key update`概述三. `on duplicate key update`的使用1. 在MySQL中的使用2. 在MyBatis中的使用参考资料一. 背景背景:业务上经常有这样的需求场景,如果之前有这条数据,就做更新;如果没有,就做新增。常用的处理方案:通过主键id或者其他唯一键判断DB中是否有这条数据,再判断调用insert或update语句。这样做逻辑处理起来比较复杂,降低代码效率,而且如果并发量高,可能会存在数据问题。二. on原创 2021-09-29 15:10:27 · 23193 阅读 · 6 评论 -
SQL索引
文章目录一. 建立索引简述二. 如何建立高效的索引三. 不走索引的SQL参考资料一. 建立索引简述索引通常分为聚集索引和非聚集索引。聚集索引速度很快,但只能建一个,所以尽量把经常使用的列建成聚集索引。非聚集索引虽然没聚集索引快,但可以建多个,比全表扫描快。二. 如何建立高效的索引经常作为条件查询(where)的列适合建立索引重复数据较少的可以建立索引不频繁插入和更新的列适合建立索引经常需要排序(order)、分组(group by)的字段适合建立索引连表查询的关联原创 2021-04-25 16:26:43 · 121 阅读 · 0 评论 -
SQL语句中in和not in条件包含null的注意点
一. 表结构和初始化数据表结构初始化数据insert into test_in(name, hobby, sex, school) values('张一','打球',1,'北京大学');insert into test_in(name, hobby, sex, school) values('张二','看书',null,'清华大学');insert into test_in(name, hobby, sex, school) values('张三','游泳',1,null);insert原创 2021-04-25 14:42:27 · 5253 阅读 · 1 评论 -
MySQL和Mybatis中JSON类型的使用
文章目录一. 背景二. MySQL中JSON类型的使用2.1 概述2.2 MySQL中json的使用三. MyBatis中JSON类型的使用3.1 概述3.2 要点讲解(1) concat()函数的使用(2)${...} & #{...}3.3 MyBatis中json 的使用(1)法1:collection="params.keys"(不推荐)(2)法2:collection为自定义map,index为map的key,item为map的value四. 参考资料一. 背景最近在做项目的时候,由原创 2021-01-22 20:55:50 · 11578 阅读 · 0 评论 -
SQL使用新技巧
一.背景最近在做数据统计方面的项目,需要写SQL来统计数据,过程中发现了之前没有接触过的sql用法,在此记录和分享一下。二. SQL小技巧1. 根据已有列增加新列概述:比如现有一张表a,有一列value_id,值为[1,2,3,4,5,6]。现在想增加一列,用来描述value_id值的含义,这种场景可以使用本技巧。原有表SELECT value_id from a;执行结果技巧SQLSELECT value_id,( case `value_id` whe原创 2020-12-16 16:32:17 · 141 阅读 · 0 评论 -
数据库中INT类型概述
文章目录一. 背景二. INT类型的总结1. 概述2. 详述2.1 bit[M]2.2 TINYINT([M])[unsigned][zerofill]2.3 SMALLINT([M])[unsigned][zerofill]2.4 MEDIUMINT([M])[unsigned][zerofill]2.5 INT([M])[unsigned][zerofill]2.6 BIGINT([M])[unsigned][zerofill]3. 说明参考资料一. 背景在设计数据库表的时候,如果字段是数值型,原创 2020-10-24 09:47:53 · 10531 阅读 · 0 评论 -
mysql·update语句报错:Data truncation: Truncated incorrect DOUBLE value: ‘系统开小差啦~请稍后再试‘
背景MySQL的update语句多次遇到这个问题,每次的原因都不同,但每个原因出现的频率都很高,在这里总结并记录一下目前为止出现过的原因。错误原因1. set后面用and连接错误示例update table set a = 'a' and b = 'b' where id = 1 (报错)解决方案:把update语句里set后面的"and"全部换成","正确示例update table set a = 'a', b = 'b' where id = 1 (正确)错误原因2.原创 2020-08-10 12:47:05 · 2232 阅读 · 0 评论 -
执行MySQL出现Lock wait timeout exceeded异常
文章目录1.问题背景2. 问题查询和解决3. 涨知识参考文献1.问题背景今天查看服务器异常日志发现有一段时间(18:10~18:13)出现频繁调用一个sql语句(delete from inspection_bill_ex where bill_code=? and process_type=? and business_type=? and property_name in 'haha'...原创 2020-04-26 17:13:57 · 693 阅读 · 0 评论 -
插入SQL语句的使用
文章目录一. 概述二. 详解1. insert into2. insert ignore into3. replace into参考资料一. 概述总结SQL语句含义数据库中已存在数据库中不存在结果举例insert into插入新数据报错插入主键自增insert into names(name, age) values(“小明”, 23);i...原创 2019-11-13 14:33:06 · 2743 阅读 · 0 评论 -
MySQL的锁
文章目录一. MySQL的锁概述1. MySQL概述2. 什么是锁?为什么使用锁?3. MySQL的锁分类概述二. MySQL常用存储引擎的锁机制1. MyISAM2. BDB3. InnoDB三. MySQL InnoDB的锁机制1. InnoDB的锁模式及加锁方法2. InnoDB的锁类型3. 快照读和当前读多版本并发控制(MVCC)四. InnoDB加锁分析1. select加锁分析1.1 ...原创 2019-11-06 19:38:17 · 339 阅读 · 0 评论 -
事务
1.1 事务的概念1.2 事务的4个特性(或ACID性)1.3 事务隔离1.3.1 事务隔离的概述1.3.2 不事务隔离带来的问题1. 更新丢失2. 脏读3. 不可重复读义4. 幻读1.3.3 事务的隔离级别1. Read Uncommitted(读取未提交内容)2. Read Committed(读取提交内容)3. Repeatable Read(可重复读)4...原创 2018-05-14 15:54:04 · 244 阅读 · 0 评论 -
MySQL数据库引擎
1 B-树和B+树1.1 B-树1.1.1 B-树的定义1.1.2 B-Tree的查找过程1.2 B+树1.2.1 B+树的定义1.2.2 B+树的示意图1.2.3 B-树 & B+树2 内存和磁盘存取原理2.1 主存存取原理2.1.1 主存概述2.1.2 主存的内部结构2.1.3 主存的存取过程2.2 磁盘存取原理2.2.1 磁盘结构2....原创 2018-05-17 16:07:40 · 642 阅读 · 0 评论