![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mysql
文章平均质量分 70
黑衣如墨剑如雪
人生在世,你只要知道两件事。一,这世上绝对存在不需要读书也很聪明,不需要努力也过得很好,甚至不需要钱就能快乐的人。二,那个人绝对不是你。
展开
-
mysql中SQL执行过程详解
mysql执行一个查询的过程,到底做了些什么:客户端发送一条查询给服务器;服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段。服务器段进行SQL解析、预处理,在优化器生成对应的执行计划;mysql根据优化器生成的执行计划,调用存储引擎的API来执行查询。将结果返回给客户端。 实际上mysql执行...转载 2019-12-26 22:25:34 · 198 阅读 · 0 评论 -
Mysql的优化策略
避免使用null值判断一般来说,使用null值判断时,一般都是全表检索,但是有例外,覆盖索引时索引会生效。尽量使用索引在where条件列或者order by 等涉及的列上加上索引,能够有效地避免全表扫描,缩小查询范围,加快数据检索的速度。最佳左前缀原则出现联合索引时,必须联合索引中的第一个字段作为条件才能保证使用到该索引,并且尽量保证条件中列的顺序与索引中列的顺序一致。...原创 2019-12-19 23:13:33 · 84 阅读 · 0 评论 -
Mysql的执行计划
执行计划就是检查sql执行过程的工具,我们可以通过执行计划知道Mysql是怎么样执行sql的,这一点在优化sql时非常有用。语法explain + sql语句 -- 查看sql语句的执行计划举例建表,添加数据执行计划执行计划参数说明id:sql语句的执行顺序。id不同时,id大的先执行;id相同,上面的先执行。此处不演示。select_type:用于...原创 2019-12-18 22:52:29 · 86 阅读 · 0 评论 -
Windows10下启动和关闭mysql服务
1、搜索框中输入"计算机管理"2、双击打开计算机管理,从服务中找到Mysql服务3、选中后直接左侧操作;或者选中后右键操作;或者双击打开MYSQL属性窗口,如果运行状态,则点击停止;如果是停止状态,则点击启动。之后点击确定。4、使用mysql服务如果有写的不对的地方,请大家多多批评指正,非常感谢!...原创 2019-12-14 16:03:12 · 2859 阅读 · 0 评论 -
MySQL事务隔离级别和MVCC
事前准备为了故事的顺利发展,我们需要创建一个表:CREATE TABLE t ( id INT PRIMARY KEY, c VARCHAR(100)) Engine=InnoDB CHARSET=utf8;复制代码然后向这个表里插入一条数据:INSERT INTO t VALUES(1, '刘备');复制代码现在表里的数据就是这样的:mysql> SELEC...转载 2019-12-14 10:06:27 · 78 阅读 · 0 评论 -
Mysql的慢日志查询
概念Mysql记录所有执行时间超过(由long_query_time控制的)指定值的sql语句,慢查询日志就是记录这些sql语句的日志文件。配置文件Linux下是my.cnf文件,Windows下是my.ini文件,与存放数据的Data文件夹的路径一样。Data文件夹路径:mysql> show global variables like "%datadir%";+-...原创 2019-12-14 21:33:13 · 134 阅读 · 0 评论 -
InnoDB的行锁(Record Locks、Gap Locks、Next-Key Locks)
Record Locks记录锁,当sql执行是通过索引精准查询来检索数据时,精准锁定索引记录。Gap Locks间隙锁,当sql执行是通过索引来检索数据,且查询不到数据时,此时sql会加上间隙锁。锁住左开右闭的区间。比如下面例子中锁住区间(3,6]。Next-Key Locks临键锁,InnoDB默认的行锁算法。当sql执行是通过索引的范围查询来检索数据,且能查到数据时...原创 2019-12-12 23:05:17 · 883 阅读 · 0 评论 -
InnoDB的行锁和表锁
【Mysql存储引擎特性】MyISAM引擎的锁级别是Table(表锁),InnoDB引擎的锁级别是Row(行锁)。表锁的加锁效率高于行锁,意味着并发情况下,行锁要优于表锁。InnoDB中存在行锁和表锁(通过给所有行加锁),下面举例说下使用行锁和表锁的情况(update语句会获取独占锁)1)、查看表相关信息以及创建索引;2)、id为主键(主键索引),使用id作为where...原创 2019-12-12 23:05:05 · 266 阅读 · 0 评论 -
InnoDB中的锁
【Innodb中锁机制】这里只简单记下共享锁、独占锁和意向锁。查看隔离级别Shared and Exclusive LocksShared Locks,共享锁(S锁)或者认为是读锁;Exclusive Locks,独占锁(X锁)或者认为是写锁。begin; -- 手动开启事务select 字段/* from 表名 where 条件 lock in share mode...原创 2019-12-12 23:04:49 · 84 阅读 · 0 评论 -
Mysql的隔离级别
Mysql事务的并发问题【Mysql事务】在并发情况下会存在一系列的问题:脏读、不可重复读、幻读。脏读:事务A读取了事务B未提交前修改的数据,但是事务B进行了回滚操作,导致事务A读取到了脏数据;不可重复读:事务A多次读取数据a,读取过程中事务B对数据a进行了修改(a→b),导致事务A读取数据的结果出现不一致;幻读:事务A进行多次范围查询,查询期间,事务B进行了数据的插入或者删除,导...原创 2019-12-05 20:50:37 · 146 阅读 · 0 评论 -
Mysql的事务
概念事务在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(来自百度百科)。在Mysql中只有提到事务,就说明使用的是Innodb引擎,因为只有Innodb引擎的数据库或表才支持事务,Myisam引擎不支持事务。事务满足ACID(【简单了解关系型数据库与非关系型数据库】),经典场景:转账。Mysql中事务相关语句show variables like 'autoco...原创 2019-12-03 00:23:06 · 91 阅读 · 0 评论 -
MySQL存储引擎MyISAM和InnoDB底层索引结构
目录一 存储引擎作用于什么对象二 MyISAM和InnoDB对索引和数据的存储在磁盘上是如何体现的三 MyISAM主键索引与辅助索引的结构1. 主键索引:2. 辅助(非主键)索引:四 InnoDB主键索引与辅助索引的结构1. 主键索引:2. 辅助(非主键)索引:五 InnoDB索引结构需要注...转载 2019-11-28 20:22:01 · 331 阅读 · 0 评论 -
深入理解MySQL索引底层数据结构与算法
目录一 理解索引的特性二 索引的各种存储结构及其优缺点(一) 二叉树(二) 红黑树(三) Hash(四) B-Tree(五) B+Tree(MySQL索引的真正存储结构)三. 联合索引底层存储结构一 理解索引的特性索引是帮助MySQL高效获取数据的排好序的数据结构 索引存储在文件里二 索引的各种存储结构及其优缺点在开始讲这一小节之前...转载 2019-11-28 20:21:36 · 103 阅读 · 0 评论 -
Mysql索引
概念Mysql索引是提高Mysql检索速度的数据结构。eg:书籍的目录就是一个索引。索引的分类索引包括单列索引、联合索引、全文索引、空间索引等,单列索引又可以分为普通索引、主键索引、唯一索引。这里只简单提及单列索引和联合索引。单列索引:索引为单个列,一个表中可以同时存在多个单列索引。 普通索引:可以空值和重复值,不需要关键字修饰; 主键索引:即主键(primar...原创 2019-11-25 22:41:32 · 86 阅读 · 0 评论 -
Mysql数据备份与还原
使用的是windows下的mysql演示原来test数据库数据备份数据库数据命令:mysqldump -h localhost -u root -p -B 数据库 > 备份文件路径,本机mysql数据库可以省略-h localhost(或者127.0.0.1),参数-B会让备份的数据库中带了创建数据库的指令,可以有多个数据库,数据库所有表信息在一个文件中。...原创 2019-11-24 01:02:01 · 140 阅读 · 0 评论 -
Mysql的存储过程
概念(百度百科)存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。存储过程与函数及其相似,实在不理解的话,就当成一个特殊的函数(没有返回值)就行了。创建存储过程DELIMITER ;;...原创 2019-11-23 15:01:59 · 69 阅读 · 0 评论 -
Mysql中自定义函数
一般来说,你想使用的函数在【MySQL常用的系统函数】中都会存在;但是果你在里面没有找到想要的函数,你也可以自己写的。函数中的变量全局变量:set关键字,变量前存在@符号,可以在任何地方访问到,eg:set @i = 1;局部变量:函数前使用declare关键字声明,变量前没有@符号,只能在函数内部使用,eg:declare j int default 2。注意:不管是全局变量还是...原创 2019-11-22 23:37:01 · 436 阅读 · 1 评论 -
MySQL常用的系统函数
MySQL函数是MySQL数据库提供的内置函数。这些内置函数可以帮助用户更加方便地处理表中的数据。MySQL的内置函数可以对表中数据进行相应的处理,以便得到用户希望得到的数据。有了这些内置函数可以使MySQL数据库的功能更加强大。1、数学函数数学函数是MySQL中常用的一类函数。其主要用于处理数字,包括整型和浮点数等等。函数 说明 ABS(X) 返回X的绝对值。 FL...转载 2019-11-22 20:39:55 · 254 阅读 · 0 评论 -
简单了解Mysql中的触发器
触发器概念trigger,一个特殊的存储过程。与表事件相关,达到指定条件(之前或者之后)而自动执行。触发器的作用1、数据操作前进行校验或者修改;2、记录数据操作记录,保证数据的完整性。触发器要素触发事件:新增(insert)、删除(delete)、更新(update);触发时间:指定触发器在触发事件之前(before)或者之后(after)执行;触发对象:表中每一...原创 2019-11-21 19:17:34 · 138 阅读 · 0 评论 -
Mysql的蠕虫复制
作用:1)、数据迁移;2)、测试表的性能(eg:数据多时的执行sql效率等)。1、查看需要复制的表的相关信息2、复制表结构create table 新表like旧表; 如果不在同一个数据库,记得使用数据库名.旧表;另外,还有复制表结构和数据的sql,但是与上面语句的执行结果是存在差异的。只复制表结构到新表:create table 新表 select * fro...原创 2019-11-19 22:04:38 · 278 阅读 · 0 评论 -
【MySQL】范式与反范式
一、数据库范式1、第一范式(1NF):无重复列,即表中每一列都是不可分割的,不满足第一范式的数据库不是关系型数据库例子:联系人表(用户名,用户信息)2、第二范式(2NF):不存在仅依赖于关键一部分的属性(不能存在部分依赖于主键)例子:选课关系(学号,课程名称,成绩,学分),学号与课程名称是主键,其不满足2NF,因为课程名称->学分3、第三范式(3NF):属性不传递...转载 2019-11-18 23:42:38 · 156 阅读 · 0 评论 -
MySQL 数据类型
MySQL 数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。数值类型MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISI...转载 2019-11-17 17:50:54 · 53 阅读 · 0 评论 -
Mysql基本sql
建表CREATE TABLE `user` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR (64) NOT NULL, `phone` CHAR (11) NOT NULL, PRIMARY KEY (`id`)) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf...原创 2019-11-20 00:47:12 · 67 阅读 · 0 评论 -
Mysql的表操作
【Mysql数据库操作】,在这里记录下mysql的表操作。1、切换数据库use 数据库名;mysql> create database test;Query OK, 1 row affected (0.00 sec)mysql> use test;Database changed2、新建表使用了反引号(`),设置自增主键为id,引擎(ENGINE)为...原创 2019-11-14 23:23:50 · 111 阅读 · 0 评论 -
Mysql的数据库操作
【Window10 Mysql服务端安装】中涉及到了建库建表的操作,在这里更加详细的整理下相关命令。1、登录C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql -h localhost -uroot -pEnter password: ********Welcome to the MySQL monitor. Commands ...原创 2019-11-13 18:55:38 · 137 阅读 · 0 评论 -
修改mysql远程登录权限
//登录mysql1. mysql -uroot -proot//赋予任何主机访问数据的权限2.mysql>GRANT ALL PRIVILEGES ON *.* TO 'r ot'@'%'WITH GRANT OPTION例如,你想root(用户)使用123(密码)从任何主机连接到mysql服务器的话。GRANT ALL PRIVILEGES ON ...原创 2019-01-31 18:17:30 · 375 阅读 · 0 评论 -
Window10 Mysql服务端安装
一、下载mysql点击【Mysql安装包下载】,选择下面那个文件(比较大的)下载(不想下载这个版本的也可以选择右侧的Looking for previous GA versions?)→ No thanks, just start my download.二、安装 1、双击刚下载完成的文件mysql-installer-community-5.7.22.1.msi开...原创 2018-11-08 10:37:05 · 3759 阅读 · 0 评论