
mysql
文章平均质量分 52
DevHappy
热爱游戏,java
展开
-
MINUS 使用
MINUS指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果内,那这笔资料就被抛弃。MINUS的语法如下:[SQL 语句 1]MINUS[SQL 语句 2];我们继续使用一样的例子:Store_Information表格Store_Name Sale...原创 2021-10-25 09:16:06 · 7539 阅读 · 0 评论 -
SQL查询中的转义字符
如果想查找“_ab”结尾的的账户select * from [user] where loginname like '%_ab'是不行的,_ 被认为是任意的字符,所以需要转义字符,有两种写法:select * from [user] where loginname like '%/_ab' escape'/';select * from [user] where loginname like '%[_]ab';通配符 含义 % 包含零个或更多字符的任意字符串。 _原创 2021-10-23 11:27:00 · 17798 阅读 · 0 评论 -
drop 、delete与truncate区别
(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。TRUNCATETABLE则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。(2)表和索引所占空间。当表被TRUNCATE后,这个表和索引所占用的空间会恢复到初始大小,DELETE操作不会减少表或索引所占用的空间。drop语句将表所占用...转载 2021-06-23 17:25:18 · 173 阅读 · 0 评论 -
Oracle Mysql中如何判断时间类型Date是否为空
date类型 为空的比较不是使用运算符号(==)比较的 而是通过is和is not来进行wheredateistrue 时间不为空wheredateis nottrue 时间为空原创 2021-03-18 09:21:44 · 3865 阅读 · 0 评论 -
步步深入:MySQL架构总览->查询执行流程->SQL解析顺序
前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了。 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一下其中的知识。一、MySQL架构总览: 架构最好看图,再配上必要的说明文字。 下图根据参考书籍中一图为原本,再在其上添加上了自己的理解。 从上图中我们可以看到,整个架构分为两层,上层是MySQLD的被称为的‘SQL Layer’,下层是各种各样对上提供接口..转载 2020-11-30 13:11:29 · 154 阅读 · 0 评论 -
聚集索引与非聚集索引的总结
聚集索引与非聚集索引的总结一.索引简介众所周知,索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构,SQL的主流索引结构有B+树以及Hash结构,聚集索引以及非聚集索引用的是B+树索引。这篇文章会总结SQL Server以及MySQL的InnoDB和MyISAM两种SQL的索引。SQL Sever索引类型有:唯一索引,主键索引,聚集索引,非聚集索引。MySQL 索引类型有:唯一索引,主键(聚集)索引,非聚集索引,全文索引。二.聚集索引聚集(clustered)索引,也叫转载 2020-11-19 12:52:42 · 176 阅读 · 0 评论 -
最左前缀匹配原则
最左前缀匹配原则:在MySQL建立联合索引时会遵守最左前缀匹配原则,即最左优先,在检索数据时从联合索引的最左边开始匹配。 要想理解联合索引的最左匹配原则,先来理解下索引的底层原理。索引的底层是一颗B+树,那么联合索引的底层也就是一颗B+树,只不过联合索引的B+树节点中存储的是键值。由于构建一棵B+树只能根据一个值来确定索引关系,所以数据库依赖联合索引最左的字段来构建。举例:创建一个(a,b)的联合索引,那么它的索引树就是下图的样子。 可以看到a的值是有顺序的,1,1,2,2,3,3,而.转载 2020-09-30 00:10:59 · 644 阅读 · 0 评论 -
Mysql中explain作用详解
一、MYSQL的索引索引(Index):帮助Mysql高效获取数据的一种数据结构。用于提高查找效率,可以比作字典。可以简单理解为排好序的快速查找的数据结构。索引的作用:便于查询和排序(所以添加索引会影响where 语句与 order by 排序语句)。在数据之外,数据库还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用数据。这样就可以在这些数据结构上实现高级查找算法。这些数据结构就是索引。索引本身也很大,不可能全部存储在内存中,所以索引往往以索引文件的形式存储在磁盘上。我们平转载 2020-09-29 14:30:42 · 104 阅读 · 0 评论 -
Mysql中in, exists与or关键字的区别
Mysql中in, exists与or关键字的区别 写法上的区别: 假设有表A,A表中有字段name。name的值可能为"x","y","z"。现要找出A表中name为"y","z"的记录: or的写法: select * from A where name="y" orname="z" in的写法: select * from A where namein ("y", "z") in,or执行效率大比拼: 如果字段name是主键或者有索引的话,那上述or...原创 2020-09-29 00:49:09 · 749 阅读 · 0 评论 -
MySQL数据库知识点和面试题
数据库三大范式是什么第一范式:每个列都不可以再拆分。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。事实上我们经常会为了性能而妥协数据库的设计。...转载 2020-09-28 18:53:43 · 380 阅读 · 0 评论 -
Mysql的Binlog原理
什么是二进制日志(binlog)binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。binlog不会记录SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改,但你可以通过查询通用日志来查看MySQL执行过的所有语句。二进制日志包括两类文件:二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和D转载 2020-09-28 18:31:57 · 381 阅读 · 0 评论 -
数据库三大范式是什么,数据库范式
关系规范化技术关系规范化是一种基于函数依赖理论对关系进行分析及分解处理的形式化技术,它将一个有异常数据操作的关系分解成更小的、结构良好的关系,使该关系有最小的冗余或没有冗余。关系规范化给设计者提供了对关系属性进行合理定义的指导。有了规范化关系设计,我们对数据库可以实现高效的、正确的操作。关系规范化技术涉及一系列规则,实施这些规则,可以确保关系数据库被规范到相应程度。规范化范式(Normal Forma,NF)是关系表符合特定规范化程度的模式。规范化范式的种类与函数依赖有着直接的联系。在关系中存在函数原创 2020-09-28 01:23:29 · 1059 阅读 · 0 评论 -
一条sql执行过长的时间,你如何优化,从哪些方面?
1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化)2、涉及联表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合3、如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引。加快查询速度4、针对数量大的表进行历史表分离--分库分表(如交易流水表)水平分表--行级A表100w数据,数据0-5...原创 2020-03-30 14:04:19 · 937 阅读 · 0 评论 -
MySQL性能优化之char、varchar、text的区别
参考:https://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html在存储字符串时, 可以使用char、varchar或者text类型, 那么具体使用场景呢?参考下面这个表结构:1、 char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定。2、 varc...原创 2020-10-24 15:23:52 · 485 阅读 · 0 评论