![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 94
陌上人如玉এ
前无颜,后无钱,小小少年,可怜可怜
还未老,想低保,小小年纪,苦恼苦恼
展开
-
【MySQL高级篇】 第16章_多版本并发控制
使用隔离级别的事务,由于可以读到未提交事务修改过的记录,所以直接读取记录的最新版本就好了。使用隔离级别的事务,InnoDB规定使用加锁的方式来访问记录。使用和隔离级别的事务,都必须保证读到已经提交了的事务修改过的记录。假如另一个事务已经修改了记录但是尚未提交,是不能直接读取最新版本的记录的,核心问题就是需要判断一下版本链中的哪个版本是当前事务可见的,这是ReadView要解决的主要问题。,创建这个 Read View 的事务 ID。原创 2023-04-07 09:49:44 · 324 阅读 · 0 评论 -
【MySQL高级篇】第15章_锁
在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的 资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。同时锁机制也为实现MySQL 的各个隔离级别提供了保证。锁冲突也是影响数据库并发访问性能的一个重要因素。所以锁对数据库而言显得尤其重要,也更加复杂。原创 2023-04-07 09:34:33 · 205 阅读 · 0 评论 -
【MySQL高级篇】第14章_MySQL事务日志
事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?锁机制重做日志回滚日志有的DBA或许会认为 UNDO 是 REDO 的逆过程,其实不然。REDO 和 UNDO都可以视为是一种恢复操作"物理级别"逻辑操作事务的回滚逆操作一致性非锁定读。原创 2023-04-07 09:02:10 · 381 阅读 · 0 评论 -
【MySQL高级篇】第13章_事务基础知识
命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。能看出在 MySQL 中,只有InnoDB 是支持事务的。原创 2023-04-07 08:46:16 · 715 阅读 · 0 评论 -
【MySQL高级篇】 第12章_数据库其它调优策略
如何确定呢?一般情况下,有如下几种方式:我们需要调优的对象是整个数据库管理系统,它不仅包括 SQL 查询,还包括数据库的部署配置、架构 等。从这个角度来说,我们思考的维度就不仅仅局限在 SQL 优化上了。通过如下的步骤我们进行梳理:物理查询优化是在确定了逻辑查询优化之后,采用物理优化技术(比如索引等),通过计算代价模型对 各种可能的访问路径进行估算,从而找到执行方式中代价最小的作为执行计划。在这个部分中,我们需要掌握的重点是对索引的创建和使用。除了可以对 SQL 本身进行优化以外,我们还可以请外援提升查询的原创 2023-04-03 10:13:33 · 331 阅读 · 0 评论 -
【MySQL高级篇】第11章_数据库的设计规范
规范化 vs 性能为满足某种商业目标 , 数据库性能比规范化数据库更重要在数据规范化的同时 , 要综合考虑数据库的性能通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间通过在给定的表中插入计算列,以方便查询。原创 2023-04-03 10:00:12 · 1082 阅读 · 0 评论 -
【MySQL高级篇】第09章_性能分析工具的使用
1. 能做什么?表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引被实际使用表之间的引用每张表有多少行被优化器查询2. 官网介绍3. 版本情况MySQL 5.6.3以前只能 EXPLAIN SELECT;MYSQL 5.6.3以后就可以 EXPLAIN SELECT,UPDATE, DELETE在5.7以前的版本中,想要显示 partitions 需要使用 explain partitions 命令;原创 2023-03-29 11:33:47 · 382 阅读 · 0 评论 -
【MySQL高级篇】 第8章_索引的创建与设计原则
① 冗余索引举例:建表语句如下我们知道,通过 idx_name_birthday_phone_number 索引就可以对 name 列进行快速搜索,再创建一 个专门针对 name 列的索引就算是一个 冗余索引 ,维护这个索引只会增加维护的成本,并不会对搜索有 什么好处。② 重复索引col2 INT,我们看到,col1 既是主键、又给它定义为一个唯一索引,还给它定义了一个普通索引,可是主键本身就 会生成聚簇索引,所以定义的唯一索引和普通索引是重复的,这种情况要避免。原创 2023-03-24 11:25:19 · 585 阅读 · 0 评论 -
【MySQL高级篇】 第10章_索引优化与查询优化
理解方式一:索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。理解方式二:非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列 (即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是,索引列+主键包含SELECT 到 FROM之间查询的列。原创 2023-04-03 09:04:33 · 367 阅读 · 0 评论 -
【MySQL高级篇】第7章_InnoDB数据存储结构
不同的数据库管理系统(简称DBMS)的页大小不同。比如在 MySQL 的 InnoDB 存储引擎中,默认页的大小是16KBSQL Server 中页的大小为8KB,而在 Oracle 中我们用术语 “块” (Block)来表示 “页”,Oracle 支持的快大小为2KB, 4KB, 8KB, 16KB, 32KB 和 64KB。原创 2023-03-20 09:19:17 · 269 阅读 · 0 评论 -
【MySQL高级篇】第06章_索引的数据结构
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现高级查找算法。索引是在存储引擎中实现的,因此每种存储引擎的索引不一定完全相同,并且每种存储引擎不一定支持所有索引类型。同时,存储引擎可以定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。原创 2023-03-17 20:42:48 · 733 阅读 · 0 评论 -
【MySQL高级篇】第05章_存储引擎
MySQL从3.23.34a开始就包含InnoDB存储引擎。大于等于5.5之后,默认采用InnoDB引擎。InnoDB是MySQL的 默认事务型引擎 ,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback)。除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。数据文件结构:(在《第02章_MySQL数据目录》章节已讲)原创 2023-03-09 14:21:45 · 391 阅读 · 0 评论 -
【MySQL高级篇】第04章_逻辑架构
比如:优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联 (join) 的时候,决定各个表的连接顺序,还有表达式简化、子查询转为连接、外连接转为内连接等。原创 2023-03-09 09:42:19 · 251 阅读 · 0 评论 -
【MySQL高级篇】第03章 用户与权限管理
比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。上述语句中privileges代表权限的名称,多个权限以逗号隔开。每个账号既可延用全局密码过期策略,也可单独设置策略。只要你创建了一个角色,系统就会自动给你一个“,一般是限制成指定IP或者内网IP段。手动设置指定时间过期方式2:单独设置。角色创建并授权后,要赋给用户并处于。在MySQL中,数据库管理员可以。手动设置密码重用方式2:单独设置。这条 SQL 语句的意思是,对。原创 2023-03-09 09:29:47 · 335 阅读 · 0 评论 -
【MySQL高级篇】第02章 MySQL的数据目录
随着MySQL的发展,除了上述两种老牌表空间之外,现在还新提出了一些不同类型的表空间,比如通用表空间(general tablespace)、临时表空间(temporary tablespace)等。MySQL 系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。这个数据目录下的文件和子目录比较多,除了 information_schema 这个系统数据库外,其他的数据库 在 数据目录 下都有对应的子目录。原创 2023-03-09 08:58:53 · 91 阅读 · 0 评论 -
【MySQL高级篇】第01章 Linux下MySQL的安装与使用
5.删除 my.cnf2. MySQL的Linux版安装2.1 CentOS7下检查MySQL依赖1. 检查/tmp临时目录权限(必不可少)由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所原创 2023-03-06 09:30:46 · 337 阅读 · 0 评论 -
【MySQL】第18章_MySQL8其它新特性
MySQL 8开始支持原子数据定义语句(Automic DDL),即。原创 2023-03-06 09:05:14 · 325 阅读 · 0 评论 -
【MySQL】第17章_触发器
MySQL从5.0.2版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERTUPDATEDELETE事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会自动激发触发器执行相应的操作。当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。原创 2023-03-06 09:01:54 · 1151 阅读 · 0 评论 -
【MySQL】第16章_变量、流程控制与游标
定义条件是事先定义程序执行过程中可能遇到的问题,处理程序定义了在遇到问题时应当采取的处理方式,并且保证存储过程或函数在遇到警告或错误时能继续执行。这样可以增强存储程序处理问题的能力,避免程序异常停止运行。说明:定义条件和处理程序在存储过程、存储函数中都是支持的。定义条件就是给MySQL中的错误码命名,这有助于存储的程序代码更清晰。它将一个错误名字和指定的错误条件关联起来。这个名字可以随后被用在定义处理程序的语句中。DECLARE 错误名称 CONDITION FOR 错误码(或错误条件)和。原创 2022-08-25 10:06:34 · 109 阅读 · 0 评论 -
【MySQL】第15章_存储过程与函数
含义:存储过程的英文是。它的思想很简单,就是一组经过预先编译的 SQL 语句的封装。执行过程:存储过程预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行。好处简化操作,提高了sql语句的重用性,减少了开发程序员的压力减少操作过程中的失误,提高效率减少网络传输量(客户端不需要把所有的 SQL 语句通过网络发给服务器)减少了 SQL 语句暴露在网上的风险,也提高了数据查询的安全性。原创 2022-08-25 09:14:04 · 226 阅读 · 0 评论 -
【MySQL】第14章_视图
视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。比如,针对一个公司的销售人员,我们只想给他看部分数据,而某些特殊的数据,比如采购的价格,则不会提供给他。再比如,人员薪酬是个敏感的字段,那么只给某个级别以上的人员开放,其他人的查询视图中则不提供这个字段。刚才讲的只是视图的一个使用场景,实际上视图还有很多作用。最后,我们总结视图的优点。操作简单。原创 2022-08-24 10:27:55 · 187 阅读 · 0 评论 -
【MySQL】第13章_约束
数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。实体完整性(Entity Integrity):例如,同一个表中,不能存在两条完全相同无法区分的记录域完整性(Domain Integrity):例如:年龄范围0-120,性别范围“男/女”原创 2022-08-24 08:44:50 · 138 阅读 · 0 评论 -
【MySQL】第12章_MySQL数据类型精讲
整数类型一共有 5 种,包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT。整数类型字节有符号数取值范围无符号数取值范围TINYINT10 ~ 255SMALLINT20 ~ 65535MEDIUMINT34BIGINT8浮点数和定点数类型的特点是可以处理小数,你可以把整数看成小数的一个特例。因此,浮点数和定点数的使用场景,比整数大多了。MySQL支持的浮点数类型,分别是 FLOAT、DOUBLE、REAL。FLOAT。...原创 2022-08-15 10:32:23 · 152 阅读 · 0 评论 -
【MySQL】第11章_数据处理之增删改
INSERT还可以将SELECT语句查询的结果插入到表中,此时不需要把每一条记录的值一个一个输入,只需要使用一条INSERT语句和一条SELECT语句组成的组合语句即可快速地从一个或多个表中向一个表中插入多行。例如,a列值为1、b列值为2,c列不需要手动插入,定义a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。为表的指定字段插入数据,就是在INSERT语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。如果省略WHERE子句,则表中的所有数据都将被更新。...原创 2022-08-02 16:06:29 · 257 阅读 · 0 评论 -
【MySQL】第10章_创建和管理表
在MySQL中,一个完整的数据存储过程总共有4步,分别是创建数据库、确认字段、创建数据表、插入数据。MySQL在执行建表语句时,将id字段的类型设置为int(11),这里的11实际上是int类型指定的显示宽度,默认的显示宽度为11。如果当前数据库中已经存在要创建的数据表,则忽略建表语句,不再创建数据表。作将把表的定义和表中的数据一起删除,并且MySQL在执行删除操作时,不会有任何的确认信息提示,因此执行删除操时应当慎重。如果当前数据库中不存在相应的数据表,则忽略删除语句,不再执行删除数据表的操作。...原创 2022-08-02 15:51:52 · 123 阅读 · 0 评论 -
【MySQL】第09章_子查询
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL4.1开始引入。SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集合)进行比较。现有解决方式:子查询的基本语法结构:子查询(内查询)在主查询之前一次执行完成。子查询的结果被主查询(外查询)使用 。注意事项分类方式1:我们按内查询的结果返回一条还是多条记录,将子查询分为单行子查询、多行子查原创 2022-08-02 15:23:01 · 150 阅读 · 0 评论 -
【MySQL】第08章_聚合函数
什么是聚合函数聚合函数作用于一组数据,并对一组数据返回一个值。聚合函数类型聚合函数语法聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用在SELECT列表中所有未包含在组函数中的列都应该包含在 GROUP BY子句中2、 使用多个列分组使用 关键字之后,在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量。三、HAVING1、基本使用过滤分组:HAVING子句行已经被分组。使用了聚合函数。满足HAV原创 2022-06-02 08:55:29 · 292 阅读 · 0 评论 -
【MySQL】第07章_单行函数
文章目录一、函数的理解1、什么是函数2、 不同DBMS函数的差异3、MySQL的内置函数及分类二、单行函数1、数值函数1 基本函数2 角度与弧度互换函数3 三角函数4 指数与对数5 进制间的转换2、字符串函数3、日期和时间函数一、函数的理解1、什么是函数函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。在SQL 中我们也可以使用函数对检索出来的数据进行函数操作。使用这些函数,可以极大地提高用户对数原创 2022-05-30 22:31:32 · 98 阅读 · 0 评论 -
【MySQL】第06章_多表查询
文章目录一、多表查询分类讲解分类1:等值连接 vs 非等值连接分类2:自连接 vs 非自连接分类3:内连接 vs 外连接二、 SQL99语法实现多表查询1、基本语法2、 内连接(INNER JOIN)的实现3、外连接(OUTER JOIN)的实现1 左外连接(LEFT OUTER JOIN)2 右外连接(RIGHT OUTER JOIN)3 满外连接(FULL OUTER JOIN)三、UNION的使用多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关原创 2022-05-26 14:18:31 · 195 阅读 · 0 评论 -
【MySQL】第05章_排序与分页
文章目录一、排序数据1、排序规则2、单列排序3、多列排序二、分页1、实现规则拓展一、排序数据1、排序规则使用 ORDER BY 子句排序ASC(ascend): 升序DESC(descend):降序ORDER BY子句在SELECT语句的结尾。2、单列排序SELECT last_name, job_id, department_id, hire_dateFROM employeesORDER BY hire_date ;SELECT last_name, job_id原创 2022-05-19 08:56:06 · 100 阅读 · 0 评论 -
【MySQL】第04章_运算符
文章目录一、算术运算符二、比较运算符三、 逻辑运算符四、 位运算符五、运算符的优先级一、算术运算符算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算。加法与减法运算符一个整数类型的值对整数进行加法和减法操作,结果还是一个整数;一个整数类型的值对浮点数进行加法和减法操作,结果是一个浮点数;加法和减法的优先级相同,进行先加后减操作与进行先减后加操作的结果是一样的;在Java中,+的左右两边如果有字原创 2022-05-19 08:40:22 · 69 阅读 · 0 评论 -
【MySQL】第03章_基本的SELECT语句
文章目录一、SQL概述1、SQL背景知识2、SQL 分类二、SQL语言的规则与规范1、基本规则2、SQL大小写规范 (建议遵守)3、注 释4、命名规则5、数据导入指令三、基本的SELECT语句1、SELECT...2、SELECT ... FROM3、列的别名4、去除重复行5、空值参与运算6、着重号7、查询常数四、显示表结构五、 过滤数据一、SQL概述1、SQL背景知识1946 年,世界上第一台电脑诞生,如今,借由这台电脑发展起来的互联网已经自成江湖。在这几十 年里,无数的技术、产业在这片江湖里沉原创 2022-05-14 23:11:11 · 109 阅读 · 0 评论 -
【MySQL】第02章_MySQL环境搭建
文章目录一、 MySQL的卸载二、MySQL的下载、安装、配置1、软件的下载2、MySQL8.0 版本的安装3、配置MySQL8.04、MySQL5.7 版本的安装、配置5、安装失败问题三、MySQL的登录1、服务的启动与停止2、自带客户端的登录与退出四、MySQL的编码设置五、MySQL图形化管理工具六、MySQL目录结构与源码一、 MySQL的卸载停止MySQL服务在卸载之前,先停止MySQL8.0的服务。按键盘上的“Ctrl + Alt + Delete”组合键,打开“任务管理器”对话框,可以原创 2022-05-13 09:37:41 · 162 阅读 · 0 评论 -
【MySQL】第01章_数据库概述
文章目录1、为什么要使用数据库2、数据库与数据库管理系统2.1 数据库的相关概念2.2 数据库与数据库管理系统的关系2.3 常见的数据库介绍3、MySQL介绍3.1 概述3.2 MySQL发展史重大事件3.3 关于MySQL 8.03.4 Oracle vs MySQL4、RDBMS 与 非RDBMS4.1 关系型数据库(RDBMS)4.1.1 实质4.1.2 优势4.2 非关系型数据库(非RDBMS)1、为什么要使用数据库持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用原创 2022-05-03 22:09:27 · 556 阅读 · 0 评论