MySQL学习笔记
文章平均质量分 87
今年是2022年,在此之前本人已经学习过MySQL了,现在准备找工作,故写一个关于MySQL的专栏,以便复习。
金鳞踏雨
断剑重铸之日,就是归来之时。
展开
-
主析取范式与主合取范式
主析取范式与主合取范式定义设A为恰含命题变元p1,…,pn的公式。公式A'称为A的主析(合)取范式(majordisjunctive(conjunctive)normal form),如果A'是A的析(合)取范式,并且其每个合(析)取子句中p1,…,pn均恰出现一次。据定义,例1.21中公式┐p→┐(p→q)的主析取范式是(p∧q)∨(p∧┐q),而其主合取范式则应是(p∨q...转载 2019-04-08 02:27:36 · 51482 阅读 · 0 评论 -
数据库中Schema(模式)概念的理解
在学习SQL的过程中,会遇到一个让你迷糊的Schema的概念。实际上,schema就是数据库对象的集合,这个集合包含了各种对象如:表、视图、存储过程、索引等。为了区分不同的集合,就需要给不同的集合起不同的名字,默认情况下一个用户对应一个集合,用户的schema名等于用户名,并作为该用户缺省schema。所以schema集合看上去像用户名。如果把database看作是一个仓库,仓库很多房间(sc...原创 2019-10-07 14:53:44 · 361 阅读 · 0 评论 -
【MySQL】高性能表结构及索引设计最佳实践(上)
范式的英文是Normal Form,所以我们通常把它称为——NF。MySQL是关系型数据库,想要设计—个好的关系,必须使关系满足一定的约束条件,此约束已经形成了规范,分成几个等级,一级比一级要求得严格!目前关系数据库有六种范式第一范式(1NF)第二范式(2NF)第三范式(3NF)巴斯-科德范式(BCNF)第四范式(4NF)第五范式(5NF,又称完美范式)它们一级比一级严格,而且是像上图这种包含关系,即:2NF一定满足1NF、3NF一定满足2NF......三星索引?原创 2023-03-24 12:43:47 · 324 阅读 · 0 评论 -
【面试题】请你谈谈MySQL性能调优的方法
【面试题】请你谈谈MySQL性能调优的方法。MySQL性能调优可以从4个方面来做1.表结构和索引2.SQL语句优化3.MySQL参数优化4.硬件及系统配置原创 2022-12-27 23:30:26 · 1282 阅读 · 1 评论 -
【MySQL】史上最全的MySQL高性能优化总结
本人之前写过许多关于MySQL性能优化的文章,在这里会将它们做一个大串讲~这里主要是讲解MySQL底层数据结构,索引优化,事务及其相关特性,MVCC机制,BufferPool缓存机制等内容。原创 2022-12-19 03:05:27 · 1329 阅读 · 0 评论 -
【MySQL】Explain详解与索引最佳实践
使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句 或 是结构的性能瓶颈。在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL。注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。原创 2022-10-01 19:15:07 · 1164 阅读 · 0 评论 -
【MySQL】MySQL索引优化实战(上)
对于辅助的联合索引(name,age,position),正常情况按照最左前缀原则这种情况只会走name字段索引,因为根据name字段过滤完,得到的索引行里的age和position是无序的,无法很好的利用索引。在MySQL5.6之前的版本,这个查询只能在联合索引里匹配到名字是 'LiLei' 开头的索引,然后拿这些索引对应的主键逐个回表,到主键索引上找出相应的记录,再比对age和position这两个字段的值是否符合。MySQL 5.6引入了索引下推优化。原创 2022-10-22 17:25:22 · 827 阅读 · 15 评论 -
【MySQL】SQL底层执行原理详解
大体来说,MySQL 可以分为 Server层和存储引擎层(支持 “插拔”)两部分。Server层。主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能。Store层。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。原创 2022-10-07 18:05:02 · 1537 阅读 · 0 评论 -
【MySQL】深入理解MySQL索引底层数据结构与算法
索引是帮助MySQL高效获取数据的的。排好序这三个字其实就是对索引最好的形容和体现。我们可以简单把索引比喻成为书本的目录页,当然这么说太过于抽象,并没有把索引的底层特性说明白,下面我们将依次分析这些数据结构,来说明索引究竟是什么?!原创 2022-09-29 01:17:41 · 2305 阅读 · 3 评论 -
【MySQL】MySQL索引优化实战(下)
对于count(*) ,MySQL并不会把全部字段取出来,而是专门做了优化,不取值,按行累加,效率很高,所以不需要用count(列名)或count(常量)来替代 count(*)!!!嵌套循环连接 NLJ算法:一次一行循环地从第一张表(称为驱动表)中读取行,在这行数据中取到关联字段,根据关联字段在另一张表(被驱动表)里取出满足条件的行,然后取出两张表的结果合集。基于块的嵌套循环连接 BNL算法, 8.0.20之后 BNL 被废了,用哈希连接代替!原创 2022-10-27 01:40:00 · 704 阅读 · 4 评论 -
【MySQL】深入理解MVCC与BufferPoll缓存机制
MVCC就是多版本并发控制机制MySQL在隔离级别下如何保证事务较高的隔离性?同样的SQL查询语句,就算对数据有也当前事务SQL语句的查询结果。在和这两个隔离级别下,它们的隔离性都是通过MVCC机制来实现的!而也可以保证,但是是通过加锁互斥来实现的!有时候连select,也要加上读锁!性能是相当的低!我们最常用的还是这个隔离级别!MVCC机制的实现就是通过read-view机制与undo版本链比对机制,使得不同的事务会根据数据版本链对比规则读取同一条数据在版本链上的不同版本数据。原创 2022-11-08 23:57:10 · 661 阅读 · 0 评论 -
【MySQL】深入理解MySQL事务隔离级别与锁机制
尽可能让所有数据检索都通过索引来完成,避免无索引行锁升级为表锁合理设计索引,尽量缩小锁的范围尽可能减少检索条件范围,避免间隙锁尽量控制事务大小,减少锁定资源量和时间长度,涉及事务加锁的SQL尽量放在事务最后执行尽可能低级别事务隔离原创 2022-10-31 02:13:14 · 796 阅读 · 2 评论 -
【MySQL】MySQL数据类型选择 与 阿里巴巴MySQL规范解读概要
(1)小数类型为 decimal,禁止使用 float 和 double(2)如果存储的字符串长度几乎相等,使用 char 定长字符串类型(3)单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表(4)业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引(5)超过三个表禁止 join。需要 join 的字段,数据类型保持绝对一致;多表关联查询时, 保证被关联的字段需要有索引。(6)页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决。原创 2022-10-29 14:21:06 · 265 阅读 · 0 评论 -
SQL优化问题的简述
创建索引避免索引失效锁粒度(行锁还是表锁)分页查询优化避免查询所有字段分析SQL的执行计划show profile 分析SQL的执行性能原创 2022-07-04 23:41:29 · 75 阅读 · 0 评论 -
MySQL数据库-存储引擎
MySQL体系结构存储引擎MySQL常用引擎的特性对比引擎的操作查询数据库支持的引擎查询某个数据库中所有数据表的引擎查询某个数据库中某个数据表的引擎创建数据表,指定存储引擎修改表的存储引擎引擎的选择原创 2022-04-14 02:53:54 · 360 阅读 · 0 评论 -
MySQL数据库-事务
什么是事务?事务的基本使用事务管理开启事务回滚事务提交事务事务执行流程事务的提交方式查询数据库中事务的提交方式修改为手动提交事务的四大特性(面试题)原子性(atomicity)一致性(consistency)隔离性(isolcation) (复杂)持久性(durability)事务的隔离级别(面试题)四种隔离级别脏读、不可重复读、幻读隔离级别的SQL查询数据库隔离级别修改数据库隔离级别什么是事务?一条或多条 SQL 语句原创 2022-04-13 11:53:49 · 82 阅读 · 0 评论 -
MySQL学习笔记-索引
什么是索引?索引的分类功能分类结构分类索引的操作创建索引创建索引的语法(1)为student表中姓名列创建一个普通索引(2)为student表中年龄列创建一个唯一索引查看索引查看索引的语法(1)查看student表中的索引alter语句添加索引添加索引的语法(1)为student表中name列添加全文索引删除索引 删除索引的语法(1)删除student表中的idx_score索引索引的实现原则磁盘存储BTreeB+Tr.原创 2022-04-03 01:55:02 · 1498 阅读 · 0 评论 -
MySQL学习知识点总结
(1)MySQL数据库基础(2)MySQL数据库DDL与DML(3)MySQL数据库DQL( 单表 )(4)MySQL数据库DQL( 多表 )(5)MySQL数据库约束(6)MySQL数据库视图(7)MySQL数据库备份(8)MySQL数据库存储过程与函数(9)MySQL实现JDBC-工具类、注入攻击原创 2022-04-02 17:52:10 · 1263 阅读 · 0 评论 -
MySQL实现JDBC-基础步骤-工具类、注入攻击
JDBC工具类之前写的代码中有很多重复的地方,虽然可以运行,但是在代码的编写上有许多无用功!案例如下:使用了DAO、Service、Controller层MySQL实现JDBC-简单案例演示_Tensorflow-CSDN博客https://blog.csdn.net/weixin_43715214/article/details/123075053而JDBC工具类就是将重复的东西放在一起统一管理。工具类的抽取...原创 2022-02-24 16:44:08 · 486 阅读 · 0 评论 -
MySQL数据库-存储过程与函数
存储过程与函数概念存储过程和函数是 事先经过编译并存储在数据库中的一段 SQL 语句的集合好处 存储过程和函数可以重复使用,减轻开发人员的工作量。类似于java中方法可以多次调用 减少网络流量,存储过程和函数位于服务器上,调用的时候只需要传递名称和参数即可 减少数据在数据库和应用服务器之间的传输,可以提高数据处理的效率 将一些业务逻辑在数据库层面来实现,可以减少代码层面的业务处理 类似于Java的方法!即:MySQL可以自己写一个函数,将某一些功能封装起来原创 2022-02-23 02:14:51 · 619 阅读 · 0 评论 -
MySQL实现JDBC-简单案例演示
JDBC案例student学生表的CRUD原创 2022-02-22 20:23:25 · 710 阅读 · 1 评论 -
MySQL数据库-DQL的练习题
数据准备练习题(1)查询用户的编号、姓名、年龄。订单编号(2)查询所有的用户。用户的编号、姓名、年龄。订单编号(3)查询所有的订单。用户的编号、姓名、年龄。订单编号(4)查询用户年龄大于23岁的信息。显示用户的编号、姓名、年龄。订单编号(5)查询张三和李四用户的信息。显示用户的编号、姓名、年龄。订单编号(6)查询商品分类的编号、分类名称。分类下的商品名称(7)查询所有的商品分类。商品分类的编号、分类名称。分类下的商品名称(8)查询所有的商品信息。商品分类的编号、分类名称。原创 2022-02-22 17:19:03 · 731 阅读 · 0 评论 -
MySQL数据库-DQL(多表查询)
多表设计一对一分析实现原则SQL演示一对多分析实现原则SQL演示多对多分析实现原则SQL演示在多个数据表中要修改表数据怎么办?方法一方法二多表查询数据准备总述SQL语句架构器图解笛卡尔积内连接查询原理显式内连接语法SQL语句隐式内连接语法SQL语句外连接查询左外连接右外连接子查询(嵌套)(1)子查询-结果是单行单列的(2)子查询-结果是多行单列的(3)子查询-结果是多行..原创 2022-02-18 17:51:32 · 1317 阅读 · 0 评论 -
MySQL实现JDBC-基础步骤
JDBC的7个步骤(1)导入jar包(2)注册驱动(3)获取连接(4)获取执行者对象(5)执行sql语句,并接收返回结果(6)处理结果(7)释放资源原创 2022-02-18 01:27:11 · 2280 阅读 · 0 评论 -
MySQL数据库备份与还原
使用shell命令备份 (mysqldump)恢复图形化界面方式备份恢复原创 2022-02-17 17:59:59 · 734 阅读 · 0 评论 -
MySQL数据库-视图
视图是一种虚拟存在的数据表。这个虚拟的表并不在数据库中实际存在。说白了,视图就是将一条SELECT查询语句的结果封装到了一个虚拟表中,所以我们在创建视图的时候,工作重心就要放在这条SELECT查询语句上。视图的好处:简单、安全、数据独立。原创 2022-02-17 01:31:57 · 1280 阅读 · 1 评论 -
MySQL数据库-约束
约束的概念和分类、主键约束、主键自增约束、使用主键自增约束有什么好处?、唯一约束 (unique)、非空约束 (not null)、外键约束、为什么要有外键约束?外键的级联更新和级联删除原创 2022-02-16 18:20:45 · 577 阅读 · 0 评论 -
MySQL数据库-DQL(单表查询)
单表查询、数据准备、查询语法、条件查询 (where)、聚合函数查询、排序查询 (order by)、排序语法、分组查询 (group by)、分页查询 (limit)原创 2022-02-15 00:56:47 · 1817 阅读 · 0 评论 -
MySQL基础知识
为了更好的对数据进行管理,我们之前对数据进行管理使用的是IO流,但是这样的一套操作太麻烦了,而且过于频繁的IO读写,内存与硬盘的数据交互,会导致系统的效率降低!原创 2022-02-14 11:36:19 · 400 阅读 · 0 评论 -
MySQL数据库-DDL与DML
DDL(Data Definition Language)数据定义语言用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等DML(Data Manipulation Language)数据操作语言用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等DQL(Data Query Language)数据查询语言 (最重要!!!)用来查询数据库中表的记录(数据)。关键字:select, where 等原创 2022-02-14 14:06:18 · 3272 阅读 · 0 评论 -
【BUG】MySQL启动的时候遇到的一些问题
MySQL数据库主机127.0.0.1与localhost区别可能有很多朋友都会碰到一个问题不知道127.0.0.1与localhost有什么区别,但是有的时间会发现使用localhost连接不了,但是改成127.0.0.1即可了连接了,那么他们会有什么区别呢,下面我给大家介绍。mysql -h 127.0.0.1 的时候,使用 TCP/IP 连接, mysql server 认为该连接来...原创 2019-09-15 23:41:47 · 236 阅读 · 0 评论