
MySQL知识
文章平均质量分 62
MySQL面试内容
你回到了你的家
这个作者很懒,什么都没留下…
展开
-
MySQL show语句
show tables原型:SHOW [EXTENDED] [FULL] TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]这个语句会列出给定数据库中的non-temporary表。原创 2022-05-07 22:26:39 · 477 阅读 · 0 评论 -
mysql 数据库的创建及使用
1 创建并选择数据库如果系统管理员在设定我们权限时创建了我们的数据库,那么我们可以直接使用数据库。否则我们需要自己进行创建:mysql> CREATE DATABASE menagerie;在Unix系统下,数据库名字是区分大小写的(不同于SQL关键字),所以我们要使用上面创建的数据库时,需要指定为menagerie。This is also true for table names. (Under Windows, this restriction does not apply, altho原创 2022-05-07 21:57:06 · 1714 阅读 · 0 评论 -
mysql用户操作语句
创建新用户CREATE USER [IF NOT EXISTS] user [auth_option] [, user [auth_option]] ... DEFAULT ROLE role [, role ] ... [REQUIRE {NONE | tls_option [[AND] tls_option] ...}] [WITH resource_option [resource_option] ...] [password_option | lock_op原创 2022-05-07 21:43:08 · 375 阅读 · 0 评论 -
MySQL中的锁机制-全局锁/表锁/行锁
数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。一、全局锁顾名思义,全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数原创 2020-12-09 00:41:34 · 271 阅读 · 0 评论 -
MySQL索引实现原理
当一个SQL查询比较慢的时候,我们一个常见的做法就是给某个字段加上一个索引,但到底什么是索引,索引又是如何工作的?在接下来的介绍中我们就会解决这样两个问题。一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本 500 页的书,如果你想快速找到其中的某一个知识点,在不借助目录的情况下,那我估计你可得找一会儿。同样,对于数据库的表而言,索引其实就是它的“目录”。一、索引的常见模型索引的出现是为了提高查询效率,但是实现索引的方式却有很多种,所以这里也就引入了索引模型的概念。可以用原创 2020-12-08 16:35:26 · 347 阅读 · 0 评论 -
MySQL事务隔离原理(四种隔离级别的具体实现)
一、事务的定义以下所说的事务都是指在InnoDB引擎下,因为MyISAM引擎是不支持事务的(这也是 MyISAM 被 InnoDB 取代的重要原因之一)。事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单元。事务的开始与结束可以由用户显式控制。如果用户没有显式地定义事务,则由数据库管理系统默认规定自动划分事务。在SQL中,定义事务的语句一般有三条:BEGIN TRANSACTION;COMMIT;ROLLBACK;事务通常以BEGIN TRANSACTI原创 2020-12-08 10:27:47 · 11010 阅读 · 4 评论 -
MySQL日志(一条sql更新语句是如何执行的)
上一节我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。在这节,我们主要关心的是一条更新语句的指令执行流程。还是从一个表的一个更新语句说起,下面是这个表的创建语句,这个表有一个主键 ID 和一个整型字段 c:mysql> create table T(ID int primary key, c int);如果要将 ID=2 这一行的值加 1,SQL 语句就会这么写:mysql> update T set c=c+1 where ID=2;再看下之前提到的sql原创 2020-12-08 00:47:36 · 204 阅读 · 0 评论 -
MySQL架构体系(从一条语句出发了解MySQL各部分的作用)
下图就是MySQL的基本架构示意图,从中我们可以看出SQL语句在MySQL的各个功能模块中的执行过程。大体来说,MySQL可以分为Server层和存储引擎层两部分。Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现在最原创 2020-11-06 18:48:54 · 205 阅读 · 0 评论 -
MySQL事务的四大特性
一、事务的四个特性二、实现方式2.1 原子性事务的原子性是通过undo log日志进行实现的。当事务需要回滚时,InnoDB引擎就会调用undo log进行SQL语句的撤销,实现数据的回滚。undo log是InnoDB引擎提供的日志。当事务对数据库进行修改,InnoDB不仅会记录redo log,还会生成对应的undo log。如果事务执行失败或调用了rollback,导致事务需要回滚,就可以利用undo log中的信息将数据回滚到修改之前的样子。但是undo log于redo log不同,它属原创 2020-09-22 08:50:12 · 8585 阅读 · 1 评论 -
数据库的锁
锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制。在 MySQL 中,不同存储引擎使用不同的加锁方式;我们以 InnoDB 存储引擎为例介绍 MySQL 中的锁机制,其他存储引擎中的锁相对简单一些。一、锁的分类1.1 表级锁与行级锁MySQL 中的锁可以按照粒度分为锁定整个表的表级锁(table-level locking)和锁定数据行的行级锁(row-level locking):表级锁具有开销小、加锁快的特性;表级锁的锁定粒度较大,发生锁冲突的概率高,支持的并发度低;原创 2020-09-21 11:28:11 · 151 阅读 · 0 评论 -
sql语句写法
一、LEFT JOIN1.1 用法LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。1.2 例子“Persons” 表:“Orders” 表:现在希望列出所有人,以及他们的订购-如果有的话,可以使用下面的sql语句SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsLEFT JOIN OrdersON Pers原创 2020-09-16 09:02:38 · 755 阅读 · 0 评论 -
MySQL优化
一、存储引擎在创建表的时候我们使用sql语句,Create table tableName () engine=myisam|innodb;这里就指明了存储引擎是myisam还是innodb。存储引擎是一种用来存储MySQL中对象(记录和索引)的一种特定的结构(文件结构),处于MySQL服务器的最底层,直接存储数据。导致上层的操作,依赖于存储引擎的选择。地位如下图:网络接口层:与客户端通信,比如传输数据等等。存储引擎层:存储数据的规则,方式。本质:存储引擎就是特定的数据存储格式(方案)。1.1原创 2020-09-14 10:24:50 · 115 阅读 · 0 评论 -
数据库锁
一、什么是MVCC多版本并发控制(Multi-Version Concurrency Control, MVCC),顾名思义,在并发访问的时候,数据存在版本的概念,可以有效地提升数据库并发能力,常见的数据库如MySQL、MS SQL Server、IBM DB2、Hbase、MongoDB等等都在使用。简单讲,如果没有MVCC,当想要读取的数据被其他事务用排它锁锁住时,只能互斥等待;而这时MVCC可以通过提供历史版本从而实现读取被锁的数据(的历史版本),避免了互斥等待。在 MySQL中,多版本并发控制原创 2020-09-14 09:19:31 · 351 阅读 · 0 评论 -
数据库查询优化
一、代数优化SQL语句经过查询分析、查询检查后可以转化为查询树,它是关系代数表达式的内部表示。下面就介绍基于关系代数等价变换规则的优化方法,即代数优化1.2 查询树的启发式优化典型的启发式规则有:选择运算应尽可能先做:在优化策略中这是最重要、最基本的一条。它常常可使执行代价节约几个数量级,因为选择运算一般使计算的中间结果大大变小。把投影运算和选择运算同时进行:如有若干投影和选择运算,并且它们都对同一个关系操作,则可以在扫描此关系的同时完成所有这些运算以避免重复扫描关系把投影同其前或后的双木运算原创 2020-09-12 09:13:36 · 1002 阅读 · 0 评论 -
为什么B+树适合做索引
一、什么是索引索引(Index)是帮助数据库高效获取数据的数据结构。索引是在基于数据库表创建的,它包含一个表中某些列的值以及记录对应的地址,并且把这些值存储在一个数据结构中。最常见的就是使用哈希表、B+树作为索引。一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。二、为什么要使用索引我们知道,数据库查询是数据库最主要的功能原创 2020-09-12 08:30:16 · 388 阅读 · 0 评论