![](https://img-blog.csdnimg.cn/20200715163805604.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 92
MySQL 从入门到精通
奥特迦
越努力,越幸运。
展开
-
【MySQL】MySQL information_schema 数据库详解
information_schema 是 MySQL 自带的数据库,它提供了访问数据库元数据的方式。(1)什么是元数据?元数据(MetaData),即数据的数据,是指定义数据结构的数据。那么数据库元数据就是指定义数据库各类对象结构的数据。例如数据库中的数据库名,表明, 列名、用户名、版本名以及从SQL语句得到的结果中的大部分字符串是元数据。(2)MySQL 中的 information_schema数据库在 MySQL 中,把 information_schema 看做是一个数据库,确切的说是信息数据库。原创 2023-02-18 14:19:41 · 2996 阅读 · 2 评论 -
【MySQL】MySQL 8.0 新特性之 - 公用表表达式(CTE)
MySQL 从 8.0 开始支持 WITH 语法,即:Common Table Expressions - CTE,共用表表达式。CTE 是一个命名的临时结果集合,仅在单个 SQL 语句(select、insert、update 或 delete)的执行范围内存在。与派生表类似的是:CTE 不作为对象存储,仅在查询执行期间持续。与派生表不同的是:CTE 可以是自引用(递归CTE),也可以在同一查询中多次引用。此外,与派生表相比,CTE 提供了更好的可读性和性能。原创 2023-02-09 21:57:25 · 2460 阅读 · 18 评论 -
【MySQL】MySQL 8.0 新特性之 - 窗口函数(Window Functions)
窗口可以理解为记录集合,窗口函数就是在满足某种条件的记录集合上执行的特殊函数。每条记录都要在此窗口内执行函数。静态窗口:每条记录都要在此窗口内执行函数,窗口大小都是固定的。不同的记录对应着不同的窗口,这种动态变化的窗口叫滑动窗口。窗口函数也称为 OLAP(Online Anallytical Processing)函数,意思是对数据库数据进行实时分析处理。窗口函数就是为了实现 OLAP 而添加的标准 SQL 功能。窗口函数对一组查询行执行类似聚合的操作。然而,聚合操作将查询行分组为单个结果行,而。原创 2023-02-04 15:17:26 · 1861 阅读 · 9 评论 -
【MySQL】 MySQL 8.0 新特性之原子 DDL
MySQL 8.0 开始支持原子数据定义语言 (DDL) 语句,即。。该操作要么被提交(相应的变更被持久化到数据字典、存储引擎和二进制日志中);要么被回滚(执行过程中出现错误,甚至是服务器宕机)。不是。一条 DDL 语句(无论是原子的还是其他的),都会隐式结束当前会话中活动的任何事务,就像在执行语句之前执行了一样。这意味着 DDL 语句不能在另一个事务执行,也不能在事务控制语句:中执行,或与同一事务中的其他语句组合。MySQL 8.0 中引入 MySQL 数据字典,使原子 DDL 成为可能。原创 2022-10-16 09:17:02 · 1352 阅读 · 6 评论 -
【MySQL】 MySQL 8.0 新特性之数据字典
MySQL Server 8.0 合并了一个全局的事务数据字典,用于存储有关数据库对象的信息,也有了原子DDL功能。在 MySQL 以前的版本中,字典数据存储在元数据文件、非事务性表和特定于存储引擎的数据字典中。在学习 MySQL 数据字典之前,先一起了解一下什么是数据字典和元数据:数据字典就类似于系统编目或花名册,它保存数据库服务器上的元数据信息(数据库的整体属性信息)。元数据信息包括:数据库的属性信息、数据表的属性信息、字段的属性信息、视图的属性信息、用户信息、统计类信息等。原创 2022-10-15 10:10:48 · 6395 阅读 · 1 评论 -
【MySQL】 Docker 安装 MySQL8.0(mac)
注意@后面“%”允许远程登入,with mysql_native_password 修饰允许旧模式的客户端登入。原创 2022-10-14 17:28:45 · 1237 阅读 · 0 评论 -
【MySQL】MySQL 发展历程和主流分支
MySQL从最初的1.0、3.1到后来的8.0,发生了各种各样的变化。被Oracle收购后,MySQL的版本演化出了多个分支,除了需要付费的MySQL企业版本,还有很多MySQL社区版本。还有一条分支非常流行的开源分支版本叫Percona Server,它是MySQL的技术支持公司Percona推出的,也是在实际工作中经常碰到的。Percona Server在MySQL官方版本的基础上做了一些补丁和优化,同时推出了一些工具。另外一个非常不错的版本叫MariaDB,它是MySQL的公司被Oracle收购后,M原创 2022-10-13 10:53:45 · 3931 阅读 · 13 评论 -
【MySQL】查询优化
✓ 优化的目的是让资源发挥价值;✓ SQL和索引是调优的关键,往往可以起到“四两拨千斤”的效果。原创 2022-09-16 16:34:33 · 7838 阅读 · 42 评论 -
MySQL - 死锁的产生及解决方案
死锁是指2+的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。@百度百科。原创 2022-08-21 14:30:56 · 18038 阅读 · 7 评论 -
MySQL - 深入理解锁机制和实战场景
MySQL 为了解决的问题,提供并使用了,下面先看一张图,了解一下 MySQL 有哪些锁:接下来,一起深入学习 MySQL 的锁机制。应用在 存储引擎中,每次锁住一行数据。应用在 存储引擎中,每次锁住一页数据 - 16KB左右。应用在 等存储引擎中,每次操作锁住整张表。接下来进行的详解,行级锁主要分为以下类:共享/排他锁、意向锁、记录锁、间隙锁、临建锁、插入意向锁、自增锁。:共享锁(Share Locks,简记为S锁)又被称为,其他事务可以并发读取数据,但任何事务都不能获取数据上的排他锁(只能加共原创 2022-08-20 15:17:37 · 1650 阅读 · 0 评论 -
MySQL - 深入理解 MySQL 的 MVCC 及实现原理
MVCC,全称,即多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。MVCC -@百度百科如何生成的多版本?每次事务修改操作之前,都会在undo_log中记录修改之前的数据状态和事务号,该备份记录可以用于其他事务的读取,也可以进行必要时的数据回滚。...原创 2022-08-14 22:59:52 · 312 阅读 · 0 评论 -
MySQL - 深入理解 MySQL 的事务和隔离级别
ACID,是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性原子性(Atomicity)一致性()隔离性(Isolation,又称独立性)持久性(Durability)即在数据库系统中,为了保证一系列数据操作的正确性,可能需要事务的支持,而为了做到功能这么强大的事务,那么这个事务功能就需要支持ACID四个特性。.........原创 2022-08-14 22:57:12 · 952 阅读 · 1 评论 -
MySQL - 慢查询优化
explain 分析 type 属性 allexplain 分析 type 属性 index靠索引字段选型、数据量和状态、表设计尽量少用 select *,使用覆盖索引。原创 2022-08-13 09:00:41 · 546 阅读 · 0 评论 -
MySQL - 一文解析 SQL 的执行顺序
这篇文章主要介绍关于 SQL 的执行顺序是怎样的,SQL 在执行顺序中最先执行的是 FROM 操作,最后执行 LIMIT;在执行每一个操作的时候都会产生一张虚拟的表,但执行过程中产生的表不会对用户展示,只有最后一张表作为输出结果呈现给用户。...原创 2022-08-11 21:45:51 · 1239 阅读 · 0 评论 -
MySQL - 一条SQL在MySQL中是如何被执行的?
MySQL 中针对表的操作可以分为增、删、改、查四种操作,也就是我们所说的 CRUD 大法,根据类型分为(增删改)和(查),不管是 DML 和 DQL 都要经过执行最优路径。前四个阶段流程都是一样的,接下来我们一起学习执行器在存储引擎上是如何进行查询和更新(增删改查)的。,这里不再单独介绍查询缓存这一流程;连接器、查询缓存、分析器、优化器、执行器的具体作用见:一文了解MySQL的基础架构及各个组件的作用。......原创 2022-08-10 15:24:29 · 359 阅读 · 0 评论 -
MySQL - 索引优化
MySQL 索引优化 即不重复的索引值和表记录总数的比值,索引的选择性越高则查询效率越高,因为选择性高的索引可以让 MySQL 在查找时过滤掉更多的行。原创 2022-08-05 23:00:10 · 1279 阅读 · 2 评论 -
MySQL - Explain详解
EXPLAIN 不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况;EXPLAIN 不考虑各种 Cache;EXPLAIN 不能显示 MySQL 在执行查询时所作的优化工作;部分统计信息是估算的,并非精确值;EXPALIN 只能解释 SELECT 操作,其他操作要重写为 SELECT 后查看执行计划。......原创 2022-08-03 10:27:53 · 622 阅读 · 0 评论 -
MySQL - 聚簇索引和非聚簇索引
聚簇索引和非聚簇索引B+Tree的叶子节点存放主键索引值和行记录就属于聚簇索引;如果索引值和行记录分开存放就属于非聚簇索引。主键索引和辅助索引B+Tree的叶子节点存放的是主键字段值就属于主键索引;如果存放的是非主键值就属于辅助索引(二级索引)。在InnoDB引擎中,主键索引采用的就是聚簇索引结构存储。...原创 2022-07-26 18:57:53 · 2385 阅读 · 0 评论 -
MySQL - 深入解析MySQL索引数据结构
MySQL官方对索引定义是存储引擎用于快速查找记录的一种数据结构。需要额外开辟空间和数据维护工作。原创 2022-07-26 15:14:46 · 402 阅读 · 0 评论 -
MySQL - 索引类型详解
MySQL目前主要有以下几种索引类型:创建普通索引的方式:如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。创建表的时候直接指定删除索引的语法1.2 唯一索引创建唯一索引的方式:修改表结构创建表的时候直接指定1.3 主键索引创建主键索引的方式:修改索引1.4 组合索引创建索引1.5 全文索引创建索引修改索引和常用的like模糊查询不同,全文索引有自原创 2022-07-14 11:40:11 · 6615 阅读 · 0 评论 -
MySQL - 日志系统
MySQL日志分类:默认情况下,错误日志是开启的,且无法被禁止。默认情况下,错误日志是存储在数据库的数据文件目录中,名称为hostname.err,其中,hostname为服务器主机名。我们可以在 MySQL 的配置文件“my.ini”中配置它:1.2 错误日志记录信息服务器启动和关闭过程中的信息未必是错误信息,比如mysql是如何去初始化存储引擎的过程记录在错误日志里等等比如sock文件找不到,无法加载mysql数据库的数据文件,如果忘记初始化mysql或data dir路径找不到,或权限不正原创 2022-07-12 22:30:00 · 978 阅读 · 0 评论 -
MySQL - 存储引擎MyISAM和Innodb
首先,我们先看一下MySQL的体系架构,对MySQL整个架构有一个直观的感受:MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。存储引擎在MySQL的体系架构中位于第三层,负责MySQL中数据的存储与提取,是与底层系统文件打交道的子系统。MySQL存储引擎是插件式的,执行器通过调用存储引擎的API接口操作数据,接口屏蔽了不同存储引擎之间的差异,可以根据不同的需求去选择不同的存储引擎。存储引擎是根据MySQL提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就原创 2022-07-10 19:23:26 · 4485 阅读 · 0 评论 -
MySQL - 一文了解MySQL的基础架构及各个组件的作用
MySQL可以基本划分为Server层和存储引擎层两部分:Server层包含了MySQL大多数核心功能,除了图中标注的连接器,查询缓存,分析器,优化器,执行器,还有所有的内置函数(日期,时间,数学和加密函数),所有跨存储引擎的功能都在这一层实现,如存储过程、触发器、视图等。存储引擎层负责MySQL中数据的存储和提取。和Linux下的各种文件系统一样,每个存储引擎都有自己的优势和劣势,各种存储引擎通过提供API和Server层对接,通过API屏蔽各种存储引擎之间的差异。常见的存储引擎有InnoDB、MyISA原创 2022-07-09 12:17:51 · 1493 阅读 · 0 评论 -
MySQL - 系统是如何跟MySQL打交道的
带着问题来一起学MySQL我们都知道,一个Java系统要想去访问MySQL数据库,必须在Java系统中引入MySQL驱动依赖,有了这个MySQL驱动才能跟MySQL数据库建立连接,然后执行各种各样的SQL语句。mysql-connector-java 是MySQL提供的JDBC驱动包,用JDBC连接MySQL数据库时必须使用该jar包,它的主要用途有三个:答案是显而易见的:不行!假设我们用Java开发了一个Web系统,是部署在Tomcat中的,那么Tomcat本身肯定是有多个线程来并发的处理同时接收到的多原创 2022-07-06 22:15:00 · 157 阅读 · 0 评论 -
cas5.3 → 连接mysql数据库
cas5.3 → 连接mysql数据库1. 添加依赖,修改pom.xml文件2. 创建用户表3. 配置数据库连接这里为了方便,直接使用http协议测试。具体配置见:cas5.3 使用http方式请求1. 添加依赖,修改pom.xml文件 <!--数据库认证相关 start--> <dependency> <groupId>org.apereo.cas</groupId> <artif原创 2020-07-30 16:15:44 · 778 阅读 · 0 评论 -
Navicate 如何导出数据库中的存储过程、事件、视图等?
Navicate 如何导出数据库中的存储过程、事件、视图等?1. 打开你的Navicate2. 连接到想到导出的数据库3. 点击菜单栏的工具4. 点击工具栏下的数据传输选项5. 点击目标源下的文件选项 -> 选择你要导出的函数1. 打开你的Navicate2. 连接到想到导出的数据库比如:我要导出cas里的过程。3. 点击菜单栏的工具4. 点击工具栏下的数据传输选项5. 点击目标源下的文件选项 -> 选择你要导出的函数...原创 2020-07-16 09:12:32 · 4276 阅读 · 1 评论 -
MySQL - 获取当天,昨天,本周,本月,上周,上月的起始时间
-- 今天SELECT DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00') AS '今天开始';SELECT DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') AS '今天结束';-- 昨天SELECT DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d 00:00:00') AS '昨天开始';SELECT DATE_FORMAT( DATE_SUB(CURDATE(),原创 2020-07-15 15:43:11 · 439 阅读 · 0 评论 -
MySQL 用gourp by分组后取某一字段最大值
MySQL 用gourp by分组后取某一字段最大值、最新数据一、业务说明二、问题复现三、解决办法1.先取出姓名、最大分数2.把上面查询的数据作为临时表与原表关联查询一、业务说明大家在日常开发中不可避免遇到对某个表分组后取最大值、最新值等业务需求,这就涉及到group by、max函数。 举个例子:SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for score-- ----------原创 2020-07-15 14:43:34 · 1525 阅读 · 0 评论