一 MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的. 先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图,在 1.2 节中会详细介绍到这些组件的作用. 连接器: 身份认证和权限相关(登录 MySQL 的时候). 查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用). 分析器: 没有命中缓存的话,SQL 语句就会经…
一条SQL语句在MySQL中如何执行 本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的. 在分析之前我会先带着你看看 MySQL 的基础架构,知道了 MySQL 由那些组件组成以及这些组件的作用是什么,可以帮助我们理解和解决这些问题. 1. MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的. 先简单介绍一下下图…
本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的. 在分析之前我会先带着你看看 MySQL 的基础架构,知道了 MySQL 由那些组件组成以及这些组件的作用是什么,可以帮助我们理解和解决这些问题. 一 MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的. 先简单介绍一下下图涉及的…
概览 本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的. 一.mysql架构分析 mysql主要分为Server层和存储引擎层 Server层:主要包括连接器.查询缓存.分析器.优化器.执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程.触发器.视图,函数等,还有一个通用的日志模块 binglog日志模块. 存储引擎: 主要负责数据的存储和读取,采用可以替换的插件式架构,支持InnoDB.MyISAM.Mem…
  //  假设参数 sql已经包含多条sql语句.如 sql = "insert into table1(...) values(...); update table2 set a=1;"; const bool CDBOperator::MultiQuery(const std::string sql, std::string& error) { int res = 0; bool ret = false; MYSQL_RES* result = NULL; std::st…
一.mysql用户管理 grant all on *.* to 'user1'@‘127.0.0.1’ identified by 'mimA123'; 创建user1用户 使用user1登录 /usr/local/mysql/bin/mysql -uuser1 -pmimA123 -h127.0.0.1 变为localhost,不加-h也能登录 mysql> grant all on *.* to 'user1'@'localhost' identified by 'mimA123'; [ro…
SQL语句大全一.创建和删除数据库 1.创建用户 //创建用户且置密码,在MySQL中行,但在Oracle中行  ----必须在超级管理员身份下操作 create user hncu identified by '1234' 2.创建数据库 //创建数据库 并手动指定编码格式//错,因为根据手册的查询,数据库名应该在 EXISTS后面CREATE DATABASE hncu IF NOT EXISTS DEFAULT CHARACTER SET 'utf8';//改正:CREATE DATABA…
1.MySQL用户管理 给远程登陆用户授权:grant all on *.* to 'user1'@'127.0.0.1' identified by '123456' (这里的127.0.0.1是指远程登陆的IP,即允许哪个IP登陆) 远程登陆的方式:mysql -h IP -u username -p  然后接着输入密码,就可以登陆了   用show grants; 命令,可以查看当前用户,所授权的大小:以及创建时的命令,可以复制后,再进行授权给其它用户 若要查看其它用户的授权,就需要用命令…
(不懂临时表的先看 MySQL临时表 ) 首先,临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间.因此在不同的连接中可以创建同名的临时表,并且操作属于本连接的临时表.         创建临时表的语法与创建表语法类似,不同之处是增加关键字TEMPORARY        临时表主要用于对大数据量的表上作一个子集,提高查询效率.但是当语句写得有问题则可能会造成不断的创建的临时表,导致磁盘I/O利用率过高. 我之前写了一个存储过程,里面有一条语句,刚开始用了group by…
例1: 一个Customer表,一个字段Value,现请问如何查到Value中第二大的值 select max(value) from Customer where value < (select max(value) from Customer) 例2: 数据库中人表有三个属性,用户(编号,姓名,身高),查询出该身高排名第二的高度. 1.查询出没有重复值的第二名,即假如最高的身高是182,有几个人同时身高是182,则查出身高小于182的的最高的身高值. 1>.方式1: select MAX(…