
数据存储
文章平均质量分 79
Oracle,mysql,sqlserver,基本语法,sql优化
靖节先生
分布式微服务架构设计,致力于业务持续优化迭代,通过技术能力创造业务价值!
展开
-
PostgreSQL数据库timestamp数据类型精度进位问题
这是默认的行为,但是您可以更改输出的精度。PostgreSQL 的 timestamp 类型默认只支持到微秒级别(6位小数),为什么select出来的数据中展示三位2024-08-07 16:19:23.999?在这种情况下,2024-08-07 16:19:23.999999999 会被处理为 2024-08-07 16:19:24.000000。进位数据:[2024-08-07 16:19:23.999999500 - 2024-08-07 16:19:23.999999999]原创 2024-08-08 11:34:04 · 2224 阅读 · 0 评论 -
MySQL更新一条已经存在的sql语句是怎么执行的
今天看到一个有意思的问题,就是Mysql更新一条已经存在的语句是怎么执行的,结果显示,匹配(rows matched)了一行,修改(Changed)了0行。,实际上执行完成sql会提示Affected rows: 0,是的,你没看错更新0行,那这就有意思了,mysql到底是更新了没有呢,具体是在哪一层更新的呢?根据之前写的文章《MySQL是如何执行一条SQL更新语句》知道更新sql语句是在server层先读取原来值,然后调用数据库引擎,最后由数据库引擎执行完成返回给server层,根据以上分析有三种情况。仅原创 2022-12-04 17:26:43 · 2814 阅读 · 0 评论 -
MySQL统计函数count详解
@count() 是一个聚合函数,返回指定匹配条件的行数。开发中常用来统计表中数据,全部数据,不为null数据,或者去重数据。1.函数说明count(1):统计所有的记录(包括null)。count(*):统计所有的记录(包括null)。count(字段):统计该"字段"不为null的记录。count(distinct 字段):统计该"字段"去重且不为null的记录。count(1)中的1并不是表示第一个字段,而是表示一个固定值。其实就可以想成表中有这么一个字段,这个字段就是固定值1,coun原创 2022-12-03 20:39:36 · 43787 阅读 · 1 评论 -
MySQL数据库表空间回收问题
如果我们把表B作为临时表,数据从表A导入表B的操作完成后,用表B替换A,从效果上看,就起到了收缩表A空间的作用。而重建表,就可以达到这样的目的。显然,花时间最多的步骤是往临时表插入数据的过程,如果在这个过程中,有新的数据要写入到表A的话,就会造成数据丢失。可以看到,与图3过程的不同之处在于,由于日志文件记录和重放操作这个功能的存在,这个方案在重建表的过程中,允许对表A做增删改操作。但是,我们遇到的更多的删除数据的场景是删除某些行,这时就遇到了我们文章开头的问题:表中的数据被删除了,但是表空间却没有被回收。原创 2022-11-26 18:06:13 · 2364 阅读 · 0 评论 -
MySQL InnoDB刷脏页详解
而MySQL中的一个机制,可能让你的查询会更慢:在准备刷一个脏页的时候,如果这个数据页旁边的数据页刚好是脏页,就会把这个“邻居”也带着一起刷掉;平时的工作中,不知道你有没有遇到过这样的场景,一条SQL语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。当然,MySQL“这家酒店”的生意好起来可是会很快就能把粉板记满的,所以“掌柜”要合理地安排时间,即使是“生意好”的时候,也要见缝插针地找时间,只要有机会就刷一点“脏页”。原创 2022-11-20 14:41:23 · 1552 阅读 · 0 评论 -
MySQL字符串前缀索引详解
MySQL字符串前缀索引与全部索引的区别原创 2022-11-20 10:00:32 · 3534 阅读 · 0 评论 -
MySQL优化器选错索引情况
MySQL优化器选错索引情况原创 2022-11-13 16:46:07 · 545 阅读 · 0 评论 -
MySQL普通索引与唯一索引
MySQL普通索引与唯一索引原创 2022-11-13 10:32:45 · 1934 阅读 · 1 评论 -
MySQL事务隔离与行锁的关系
MySQL事务隔离与行锁的关系原创 2022-11-12 17:57:53 · 805 阅读 · 0 评论 -
MySQL全局锁,表锁,行锁
数据库锁设计的初衷是为了处理并发问题,数据库作为多用户共享资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则,而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围,MySQL里面的锁可以分为三类,分别是全局锁,表锁,行锁。原创 2022-11-06 18:43:02 · 697 阅读 · 0 评论 -
MySQL索引详解
首先什么是索引,索引就是排好序的快速查找数据结构。索引的出现就是为了提高查询效率,索引的概念比较抽象,就像书的目录一样,通过目录可以很快的找到对应的章节,但是提高查询的同时也会增加一定的维护成本,在实际应用场景中,其实也是一个取舍的过程。原创 2022-11-05 19:54:26 · 625 阅读 · 0 评论 -
MySQL事务详解
MySQL事务详解原创 2022-11-05 17:16:39 · 937 阅读 · 0 评论 -
MySQL是如何执行一条SQL更新语句
MySQL是如何执行一条SQL更新语句原创 2022-11-03 07:48:46 · 1464 阅读 · 1 评论 -
MySQL是如何执行一条SQL查询语句的
MySQL是如何执行一条SQL查询语句的原创 2022-11-02 18:18:51 · 2339 阅读 · 4 评论 -
MySQL架构设计详解
MySQL架构设计总共分为四层,分别是连接层,服务层,引擎层与存储层。原创 2022-10-29 15:41:33 · 1398 阅读 · 0 评论 -
MySql统计函数COUNT详解
MySql统计函数COUNT详解1. COUNT()函数概述2. COUNT()参数说明3. COUNT()使用场景4. COUNT()阿里开发规范1. COUNT()函数概述COUNT() 是一个聚合函数,返回指定匹配条件的行数。开发中常用来统计表中数据,全部数据,不为NULL数据,或者去重数据。2. COUNT()参数说明COUNT(1):统计不为NULL 的记录。COUNT(*):统计所有的记录(包括NULL)。COUNT(字段):统计该"字段"不为NULL 的记录。1.如果这个字段是定原创 2022-05-09 14:22:03 · 38992 阅读 · 0 评论 -
MySql深分页问题详解
MySql深分页问题详解1. 问题描述2. 问题分析3. 环境准备3.1 创建两个表3.2 创建两个函数3.3 编写存储过程3.4 编写存储过程3.5 创建索引3.6 验证测试4. 解决方案4.1 使用索引覆盖+子查询优化4.2 起始位置重定义4.3 降级策略5. 梳理总结1. 问题描述日常开发中经常会涉及到数据查询分页的问题,一般情况下都是根据前端传入页数与页码通过mysql的limit方式实现分页,对于数据量较小的情况下没有问题,但是如果数据量很大,深分页可能导致查询效率低下,接口超时的情况。2.原创 2022-04-24 16:22:39 · 7378 阅读 · 2 评论 -
MySQL数据库JSON字段类型与JSON函数
MySQL数据库JSON字段类型与JSON函数1. MySQL JSON概述1.1 JSON字段说明1.2 JSON函数说明2. MySQL JSON操作1. MySQL JSON概述1.1 JSON字段说明Mysql5.7版本及其以后提供了一个原生的Json字段类型,Json类型的值将不再以字符串的形式存储,而是采用一种允许快速读取文本元素(document elements)的内部二进制(internal binary)格式。在Json列插入或者更新的时候将会自动验证Json文本,未通过验证的文本原创 2022-04-07 13:50:46 · 4651 阅读 · 0 评论 -
MySQL回表与覆盖索引
MySQL回表与覆盖索引1. MySQL存储引擎2. MySQL索引结构2.1 B树和B+树定义2.2 B树和B+树区别2.3 B+Tree优点3. MySQL索引回表4. MySQL覆盖索引5. B+Tree 能存多少数据1. MySQL存储引擎MySQL比较常见的三种存储引擎:InnoDB、MyISAM、Memory。这三种存储引擎的实现方式各不相同,InnoDB、MyISAM使用的是B+树,Memory使用的是哈希索引。虽然InnoDB、MyISAM都使用的是B+树,但两者还是不完全相同的。In原创 2022-01-18 14:29:33 · 2013 阅读 · 0 评论 -
MySQL架构设计详解
Mysql架构设计详解1. MySQL架构设计2. MySQL架构说明2.1 连接层2.2 服务层2.3 引擎层2.4 存储层1. MySQL架构设计MySQL架构设计总共分为四层,分别是连接层,服务层,引擎层与存储层。和其它数据库相比, MySQL 有点与众不同, 它的架构可以在多种不同场景中应用并发挥良好作用。 主要体现在存储引擎的架构上, 插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。 这种架构可以根据业务的需求和实际需要选择合适的存储引擎。2. MySQL架构说明原创 2022-01-18 13:34:06 · 948 阅读 · 1 评论 -
MySQL通过函数存储过程批量插入
MySQL批量插入数据1. MySQL批量造数概述2. MySQL批量造数实现2.1 创建表2.2 设置参数2.3 编写函数与存储过程2.4 批量插入2.5 实现验证1. MySQL批量造数概述在日常开发过程中有些场景需要批量造数进行测试,本文就是通过MySql数据库函数与存储过程实现批量插入数据,当然也可以通过代码循环插入数据,亦或是通过其他工具实现,这里要实现的是直接操作数据库,通过测试发现直接通过数据库效率更高,更方便。2. MySQL批量造数实现2.1 创建表首先创建测试表,员工表与部门表原创 2022-01-17 15:06:52 · 3756 阅读 · 0 评论 -
Oracle数据库SQL优化详解
Oracle数据库SQL优化1. Oracle SQL优化概述2. Oracle SQL优化详解2.1 Oracle 查询阻塞2.2 Oracle 查询耗时 SQL2.3.Oracle 查看执行计划2.4.Oracle 查看收集统计信息2.5.Oracle 查询优化器 -- 改写查询语句2.6.Oracle 查询优化器 -- 访问路径2.7.Oracle 查询优化器 -- 表连接方法2.8.Oracle 索引2.9.Oracle 视图2.10.Oracle 减少数据库访问次数2.11 Oracle 面向对象原创 2022-01-07 17:30:55 · 18287 阅读 · 2 评论 -
MySQL执行计划Explain详解
MySQL执行计划Explain1. Explain概述2. Explain使用3. Explain参数说明3.1 id3.2 select_type3.3. table3.4. partitions3.5. type3.6. possible_keys3.7. key3.8. key_len3.9. ref3.10 rows3.11 filtered3.12 Extra1. Explain概述使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句, 从而知道 MySQL 是如何处理你的 SQ原创 2022-01-06 15:10:58 · 1364 阅读 · 4 评论 -
MySQL数据库索引及失效场景
MySQL数据库索引及失效场景1. 索引失效概述1.1 索引的概念1.2 索引的特点1.3 索引的分类1.4 索引的使用场景2. 索引失效场景2.1 常见索引失效的9种情况2.2 索引失效场景总结3. 索引失效验证3.1 全值匹配3.2 最佳左前缀3.3 索引计算3.4 索引范围:索引列上不能有范围查询3.5 索引覆盖:尽量使用覆盖索引3.6 不等: 使用不等于(!= 或者 <>)的时候3.7 null:字段的is not null 与is null3.8 like:like的前后模糊匹配3.9原创 2022-01-06 14:23:46 · 4168 阅读 · 3 评论 -
select for update会锁表还是锁行
select for update会锁表还是锁行select查询语句是不会加锁的,但是select …for update除了有查询的作用外,还会加锁,而且它是悲观锁。那么它加的是行锁还是表锁,这就要看是不是用了索引/主键。走主键或者索引就是行锁,没有主键或者索引就是表锁。...原创 2021-11-05 11:09:02 · 523 阅读 · 0 评论 -
MySQL数据类型详解
MySQL数据类型详解1.MySQL数据类型1.1 数值类型1.2 日期类型1.3 字符串类型2.MySQL各数据类型括号内数字含义2.1 数值类型括号内数字含义2.2 字符类型括号内数字含义3. 案例验证1.MySQL数据类型MySQL 支持多种类型,可以分为三类:数值、日期/时间和字符串(字符)类型。1.1 数值类型这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION原创 2021-10-11 21:23:06 · 1059 阅读 · 0 评论 -
MySQL数据库中tinyint类型字段读取数据为true和false
MySQL数据库中tinyint类型字段读取数据为true和falseMySQL数据库中tinyint类型字段读取数据为true和false1、场景数据库版本:mysql数据库5.7字段类型:`THROW_TYPE` tinyint(1) NOT NULL DEFAULT '0' COMMENT '客户端类型 0:PC 1:无线'数据库存储:0或者1获取数据:获取数据是true或false2、解决方案修改tinyint类型的长度在查询的sql语句上面做修改在连接串中增加 Treat原创 2020-12-25 15:16:02 · 1149 阅读 · 0 评论 -
Mysql使用函数json_extract处理Json类型数据
Mysql使用函数json_extract处理Json类型数据1. 需求概述2. json_extract简介2.1 函数简介2.2 使用方式2.3 注意事项3. 实现验证3.1 建表查询3.2 查询结果1. 需求概述业务开发中通常mysql数据库中某个字段会需要存储json格式字符串,查询的时候有时json数据较大,每次全部取出再去解析查询效率较低,也比较麻烦,则Mysql5.7版本提供提供函数json_extract,可以通过key查询value值,比较方便。2. json_extract简介2原创 2021-08-24 14:41:26 · 26817 阅读 · 9 评论 -
Redis详解-持续更新中
Redis详解1. Redis概述2. Redis客户端2.1 Redis可视化客户端2.2 Redis Desktop Manager2.3 Redis Client3. Redis原理1. Redis概述2. Redis客户端2.1 Redis可视化客户端Redis的可视化客户端目前较流行的有两个:Redis Desktop Manager 、 Redis Client 。Redis官网地址:https://www.redis.com.cn/2.2 Redis Desktop Manager原创 2021-07-13 11:42:00 · 339 阅读 · 0 评论 -
MySQL数据类型int、bigint、smallint 和 tinyint的区别
MySQL 数据类型int、bigint、smallint 和 tinyint的区别1. MySQL数据类型int、bigint、smallint 和 tinyint的区别2. tinyint概述2.1 tinyint有符号与无符号区别2.2 tinyint(1)与tinyint(2)区别1. MySQL数据类型int、bigint、smallint 和 tinyint的区别数据类型范围存储大小bigint-2^63 (-9223372036854775808) 到 2^63-1原创 2021-06-28 18:30:34 · 15726 阅读 · 0 评论 -
数据库 MySQL事务与MVCC如何实现的隔离级别
数据库 MySQL事务与MVCC如何实现的隔离级别1.数据库介绍1.1 事务四大特性(ACID)1.2 事务隔离级别2. 事务和MVCC原理2.1 不同事物同时操作同一条数据产生的问题2.2 LBCC解决数据丢失2.3 MVCC解决数据丢失2.4 InnoDB的MVCC实现原理2.5 MVCC总结1.数据库介绍1.1 事务四大特性(ACID)原子性(atomicity): 事务的最小工作单元,要么全成功,要么全失败。一致性(consistency): 事务开始和结束后,数据库的完整性不会被破坏。原创 2021-06-11 07:26:51 · 287 阅读 · 1 评论 -
MySQL中left join后on与where的区别
数据库 SQL语句中的left join后on与where的区别1.概述2.案例验证2.1 数据初始化2.2 查询验证3.总结分析1.概述前天写SQL时本想通过 A left B join on and 后面的条件来使查出的两条记录变成一条,奈何发现还是有两条。后来发现 join on and 不会过滤结果记录条数,只会根据and后的条件是否显示 B表的记录,A表的记录一定会显示。不管and 后面的是A.id=1还是B.id=1,都显示出A表中所有的记录,并关联显示B中对应A表中id为1的记录或者B原创 2021-06-11 07:00:02 · 483 阅读 · 1 评论 -
MySQL中ESCAPE关键字的用法详解
MySQL中ESCAPE关键字的用法详解MySQL中ESCAPE关键字的用法详解1. mysql转义概述2. escape验证MySQL中ESCAPE关键字的用法详解1. mysql转义概述转义即表示转义字符原来的语义,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。MySQL中,转义字符以“\”开头,编程中常见的转义字符,在MySQL均是有效的,在此不做赘述和讨论。在此,主要通过“%” 和 “_”来对ESCAPE关键字的作用进行说明。%:匹原创 2021-02-23 19:39:21 · 5744 阅读 · 1 评论 -
MySQL分组group by详解
数据库 mysql数据库 group by having详解一、概念group by 字段分组,以哪个字段分组就是以哪个字段作为唯一值进行分组,多个字段同样道理。having相当于是分组后的条件语句。二、语法结构select 字段 from 表名 where 条件 group by 字段select 字段 from 表名 group by 字段 having 过滤条件注意:对于过滤条件,可以先用where,原创 2021-01-25 20:00:41 · 648 阅读 · 0 评论 -
Mysql replace into实现存在则更新不存在则插入
Mysql replace into实现存在则更新不存在则插入-- Mysql replace into实现存在则更新不存在则插入CREATE TABLE `replace_test` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) DEFAULT NULL, `uid` VARCHAR(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uid_uniqu原创 2021-01-15 11:55:06 · 518 阅读 · 0 评论 -
MySql表及索引大小查询
数据库 mysql 库表以及索引大小查询```数据常见的一些参数,比如库大小,表大小,索引大小等指标有助于我们了解数据库,更好的使用数据库及优化。```1、工具查看2、命令查看-- 数据库 mysql 库表以及索引大小查询-- 查看指定库的大小SELECT CONCAT(ROUND(SUM(DATA_LENGTH/1024/1024),2),'MB') AS DATA FROM TABLES WHERE table_schema='testschema';--.原创 2021-01-12 10:59:54 · 4140 阅读 · 0 评论 -
MySQL批量插入数据通过函数存储过程
数据库 mysql批量插入数据函数存储过程原创 2020-12-13 10:27:12 · 640 阅读 · 0 评论 -
MySQL联合索引以及索引顺序优化
数据库 mysql报表sql联合索引以及索引顺序优化表结构CREATE TABLE `order_demo` ( `ID` bigint(20) NOT NULL AUTO_INCREMENT, `B2C_ORD_ID` varchar(50) DEFAULT NULL COMMENT '销售订单号', `ORDER_NO` varchar(50) NOT NULL COMMENT '订单号', `SKU_ID` varchar(50) DEFAULT NULL COMMENT '商原创 2020-12-08 10:08:38 · 806 阅读 · 0 评论