-
mysql的语句执行过程_MySQL的SQL语句执行过程
2021-03-16 18:21:50理解MySQL当中的SQL语句MySQL的sql语句和我们常用的编程语句一样,都是我们输入文本,编译器编译或者解释执行,转化成计算机能...MySQL的sql语句执行过程1,客户端讲sql语句发送给服务端2,服务端解析sql语句2.1 ...理解MySQL当中的SQL语句
MySQL的sql语句和我们常用的编程语句一样,都是我们输入文本,编译器编译或者解释执行,转化成计算机能识别的语言然后操作计算机资源(磁盘,内存,处理器,计算器等)完成特定功能的操作
平时我们会使用max min IF()等函数为系统自带,而MySQL有可以让我们自定义函数。
MySQL的sql语句执行过程
1,客户端讲sql语句发送给服务端
2,服务端解析sql语句
2.1 查询缓存
查看缓存里面是不是有相同的sql语句执行计划,如果数据高速缓存里面有这个语句,则服务器进程就会直接执行这个SQL 语句,省去后续的工作。省去了语句解析的原因。从内存当中读取数据比磁盘块。注意区分服务端的数据缓存和客户端的缓存是不一样的。
2.2解析语句
2.2.1合法性检查
2.2.2语句含义解析
对sql语句当中涉及的表和库确定
2.3获取对象解析锁
2.4核对权限
2.5确定最佳执行计划
对sql语句进行优化,并把优化的结果放到数据高速缓存里面
2.6语句执行
一是若被选择行所在的数据块已经被读取到数据缓冲区的话,则服务器进程会直接把这个数据传递给客户端,而不是从数据库文件中去查询数据。 二是若数据不在缓冲区中,则服务器进程将从数据库文件中查询相关数据,并把这些数据放入到数据缓冲区中(buffer cache)。
服务端将结果发送给客户端
什么是函数
函数存储着一系列sql语句,调用函数就是一次性执行这些语句。所以函数可以降低语句重复。【但注意的是函数注重返回值,不注重执行过程,所以一些语句无法执行。所以函数并不是单纯的sql语句集合。】
-
mysql分页关联查询执行过程_掌握聚合函数和分组、子查询、正则、索引、用户管理、分页、查询过程 、执行...
2021-02-05 13:49:55学习主题:MySQL学习目标:1 掌握 聚合函数和分组2 掌握...Avg()求平均值(整数)Sum()分组求和(整数)Min()求分组最小值Max()求分组最大值Count()求行数每个聚合函数的作用是什么?Avg()求平均值 参数:(整数)Sum()分...学习主题:MySQL
学习目标:1 掌握 聚合函数和分组
2 掌握子查询
3 掌握正则
MySQL中的聚合函数
MySQL5.7是否支持SQL99标准?
支持
MySQL中的数据分组
MySQL中有哪些常用的聚合函数(组函数)?
Avg()求平均值(整数)
Sum()分组求和(整数)
Min()求分组最小值
Max()求分组最大值
Count()求行数
每个聚合函数的作用是什么?
Avg()求平均值 参数:(整数)
Sum()分组求和 参数:(整数)
Min()求分组最小值 参数:(字符、数字、日期)
Max()求分组最大值 参数:(字符、数字、日期)
Count()求行数
Count(*)
Count(expr)
Count(distinct expr)
在MySQL中通过什么子句来创建数据分组?
Group by
如何约束数据分组?
Having()
计算每个部门的平均薪水
Select avg(e.salary) from employeese group by e.department_id;
显示那些最高薪水大于 5000 的部门的部门号和最高薪水。
select e.department_id,max(e.salary) from employees e group by e.department_id HAVING MAX(e.salary)>500;
MySQL中的子查询
MySQL的子查询可以放到SQL语句中的什么位置?
Where 子句
Having子句
From 子句
使用子查询的原则是什么?
子查询放在圆括号中。
将子查询放在比较条件的右边。
在单行子查询中用单行运算符,在多行子查询中用多行运算符。
在MySQL中如何处理多行子查询?
In 等于列表中的任何成员
any 比较子查询返回的每个值
all比较子查询返回的全部值
MySQL中的正则表达式
MySQL中正则表达式的特点是什么?
使用正则表达式定义字符串的搜索条件,性能高于like
可以对整数类型或者字符类型检索
使用regexp关键字表示正则匹配
默认忽略大小写,如果区分大小写,使用binary关键字
MySQL中使用正则表达式的语法结构是什么?
MySQL中支持哪些正则表达式的模板?其对应的含义是什么?
^在正则表达式中表示开始
$在正则表达式中表示结尾
. 英文的点,它匹配任何一个字符,包括回车、换行等
“*”:星号匹配 0 个或多个字符,在它之前必须有内容。
"+":加号匹配 1 个或多个字符,在它之前也必须有内容。
“?”:问号匹配 0 次或 1 次。
“|”:表示或者含
“[a-z]”:字符范围
“^[....]”:以什么字符开头的
“[^....]”:匹配不包含在[]的字符
“{n}”:固定次数。
“{n,m}”:范围次数。
查询雇员表中名字是以k开头的雇员名字与薪水。
Select last_name,salary from employees where last_name REGEXP binary '^K';
查询雇员表中名字是以n结尾的雇员名字与薪水。
Select last_name,salary from employees where last_name REGEXP binary 'n$';
MySQL中创建普通索引
MySQL中的索引类型有哪些?
• 普通索引
• 唯一索引
• 主键索引
• 组合索引
• 全文索引
在MySQL中创建普通索引的方式有些?
直接创建索引
CREATE INDEX index_name ON table(column(length));
修改表添加索引
ALTER TABLE table_name ADDINDEX index_name(column(length));
创建表时指定索引列
CREATE TABLE`table`( COLUMNTYPE, PRIMARYKEY(`id`), INDEX index_name(column(length)) );
如何查询一个表中的索引?
Show index from table_name;
如何删除一个索引?
DROP INDEX index_name ON table;
学习主题:MySQL
学习目标:1 掌握Mysql索引
2 掌握用户管理
3 掌握分页 查询过程 执行计划
4 了解mysql的引擎
MySQL中创建唯一索引
什么是唯一索引?
唯一索引与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值
在MySQL中如何创建唯一索引?
CREATE UNIQUE INDEX indexName ON table(column(length));
MySQL中创建主键索引
什么是主键索引?
主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建 表的时候同时创建主键索引。
在MySQL中如何创建主键索引?
修改表添加主键索引
ALTER TABLE 表名 ADD PRIMARYKEY(列名);
创建表时指定主键索引
CREATE TABLE`table`( COLUMNTYPE, PRIMARYKEY(column) );
MySQL中创建组合索引
什么是组合索引?
组合索引是指使用多个字段创建的索引,只有在查询条件中使用了创建索引时的第一个 字段,索引才会被使用(最左前缀原则)。
什么是最左前缀原则?
就是最左优先
如:我们使用表中的 name,address,salary 创建组合索引,那么想要组合索引生效, 我们只能使用如下组合: name/address/salary name/address name/ 如果使用 addrees/salary 或者是 salary 则索引不会生效。
MySQL中如何创建组合索引?
修改添加组合索引
ALTER TABLE table_name ADD INDEX index_name(column(length),column(length));
创建表时创建组合索引
CREATE TABLE`table`(COLUMNTYPE,INDEX index_name(column(length),column(length)) );
MySQL中创建全文索引
什么是全文索引?
全文索引(FULLTEXTINDEX)主要用来查找文本中的关键字,而不是直接与索引中的值 相比较。 FULLTEXT 索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的 where 语句的参数匹配。FULLTEXT 索引配合 match against 操作使用,而不是一般的 where 语句 加 like。
全文索引可以从 CHAR、VARCHAR 或 TEXT 列中作为 CREATETABLE 语句的一部分 被创建,或是随后使用 ALTERTABLE 添加。不过切记对于大容量的数据表,生成全文索 引是一个非常消耗时间非常消耗硬盘空间的做法。
如何创建全文索引?
修改添加全文索引
ALTER TABLE table_name ADD FULLTEXT index_content(content);
创建表时创建全文索引
CREATE TABLE`table`( COLUMNTYPE, FULLTEXTindex_name (column) );
如何删除全文索引?
DROP INDE Xindex_name ON table ;
ALTER TABLE table_name DROP INDEX index_name;
MySQL中使用全文索引
在MySQL中如何使用全文索引?
全 文 索 引 的 使 用 与 其 他 索 引 不 同 。 在 查 询 语 句 中 需 要 使 用 match(column) against(‘content’) 来检索数据
什么是全文解析器?
全文索引中基本单位是”词”。分词,全文索引是以词为基础的,MySQL 默认的分词是 所有非字母和数字的特殊符号都是分词符。在检索数据时我们给定的检索条件也是词。 MySQL 中默认的全文解析器不支持中文分词。如果数据含有中文需要更换全文解析器 NGRAM。
在创建全文索引时如何指定解析器?
在创建全文索引时可以指定 ngram 解析器
ALTER TABLE table_name ADD FULLTEXT index_content(content) WITH PARSER NGRAM;
MySQL中的用户管理
MySQL中有几种用户类型?
root 用户
超级管理员
由 root 用户创建的普通用户
在MySQL中如何创建用户?
CREATE USER username IDENTIFIED BY 'password';
在MySQL中如何查看用户信息?
SELECT USER,NOST FROM USER(该表位于 mysql 库中);
在MySQL中如何为用户分配权限?
新用户创建完后是无法登陆的,需要分配权限。 GRANT 权限 ON 数据库.表 TO 用户名@登录主机 IDENTIFIEDBY"密码" GRANTALLPRIVILEGESON*.*TO'username'@'localhost'IDENTIFIEDBY'password' 登陆主机: % 匹配所有主机 localhost localhost 不会被解析成 IP 地址,直接通过 UNIXsocket 连接 127.0.0.1 会通过 TCP/IP 协议连接,并且只能在本机访问; ::1 ::1 就是兼容支持 ipv6 的,表示同 ipv4 的 127.0.0.1
MySQL中有哪些权限?
ALTER: 修改表和索引。
CREATE: 创建数据库和表。
DELETE: 删除表中已有的记录。
DROP: 删除数据库和表。
INDEX: 创建或删除索引。
INSERT: 向表中插入新行。
SELECT: 检索表中的记录。
UPDATE: 修改现存表记录。
FILE: 读或写服务器上的文件。
PROCESS: 查看服务器中执行的线程信息或杀死线程。
RELOAD: 重载授权表或清空日志、主机缓存或表缓存。
SHUTDOWN: 关闭服务器。
ALL: 所有权限,ALLPRIVILEGES 同义词。
USAGE: 特殊的 "无权限" 权限
在MySQL中如何刷新权限?
每当调整权限后,通常需要执行以下语句刷新权限 FLUSHPRIVILEGES
在MySQL中如何删除用户?
DROPUSERusername@localhost
MySQL中使用Navicat管理用户
使用Navicat创建u_bjsxt用户并分配权限。
创建用户
分配权限
使用Navicat删除u_bjsxt用户。
MySQL中的分页查询
MySQL中的分页原则是什么?
• 在 MySQL 数据库中使用 LIMIT 子句进行分页查询。
• MySQL 分页中开始位置为 0。
• 分页子句在查询语句的最后侧
MySQL中分页语法是什么?
LIMIT 子句:SELECT 投影列 FROM 表名 WHERE 条件 ORDERBYLIMIT 开始位置,查询数量。
LIMITOFFSET 子句:SELECT 投影列 FROM 表名 WHERE 条件 ORDER BY LIMIT 查询数量 OFFSET 开始位置。
MySQL执行查询过程介绍
MySQL执行计划的作用是什么?
在 MySQL 中可以通过 explain 关键字模拟优化器执行 SQL 语句,从而知道 MySQL 是 如何处理 SQL 语句的。
MySQL执行查询处理过程是什么?
• 客户端向 MySQL 服务器发送一条查询请求
• 服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果。否则进 入下一阶段
• 服务器进行 SQL 解析、预处理、再由优化器生成对应的执行计划
• MySQL 根据执行计划,调用存储引擎的 API 来执行查询
• 将结果返回给客户端,同时缓存查询结果
MySQL的执行计划
执行计划中包含哪些列?
ID
select_type
table
type
possible_keys
Key
key_len
ref
rows
0Fitered
extra
在执行计划中每个列的作用是什么?
ID:查询执行顺序
Select_type: simple union primary derived subquery union
Table:显示这一行的数据是关于哪张表的
Type:显示连接使用了何种类型。从最好到最差的连接类型为 system、const、 eq_reg、ref、range、index 和 ALL。
possible_keys:查询条件字段涉及到的索引,可能没有使用。
Key:实际使用的索引。如果为 NULL,则没有使用索引。
key_len:表示索引中使用的字节数,查询中使用的索引的长度(最大可能长度),并非实际使用 长度。
Ref:显示索引的哪一列被使用了,如果可能的话,是一个常量 const。
Rows:根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数
Fitered:显示了通过条件过滤出的行数的百分比估计值
Extra:MYSQL 如何解析查询的额外信息。
MySQL的存储引擎介绍
如何查看MySQL的存储引擎?
SHOW ENGINES;
MySQL5.7中提供了哪些存储引擎?
ISAM(IndexedSequentialAccessMethod)
MyISAM
InnoDB
如何修改数据库级别的存储引擎?
修改 MySQL 的 my.ini 配置文件 C:\ProgramData\MySQL\MySQLServer5.7 default-storage-engine=数据库引擎名称 重启 MySQL
如何修改标级别的存储引擎?
ALTERTBALE tableNameengine=InnoDB 查询表的存储引擎 showcreatetabletable_name;
-
中给函数赋读权限_掌握聚合函数和分组、子查询、正则、索引、用户管理、分页、查询过程 、执行计划mysql的...
2021-01-11 18:17:44学习主题:MySQL学习目标:1 掌握 聚合函数和分组2...Avg()求平均值(整数)Sum()分组求和(整数)Min()求分组最小值Max()求分组最大值Count()求行数每个聚合函数的作用是什么?Avg()求平均值 参数:(整数)Sum()分...学习主题:MySQL
学习目标:
- 1 掌握 聚合函数和分组
- 2 掌握子查询
- 3 掌握正则
MySQL中的聚合函数
MySQL5.7是否支持SQL99标准?
支持
MySQL中的数据分组
MySQL中有哪些常用的聚合函数(组函数)?
Avg()求平均值(整数)
Sum()分组求和(整数)
Min()求分组最小值
Max()求分组最大值
Count()求行数
每个聚合函数的作用是什么?
Avg()求平均值 参数:(整数)
Sum()分组求和 参数:(整数)
Min()求分组最小值 参数:(字符、数字、日期)
Max()求分组最大值 参数:(字符、数字、日期)
Count()求行数
Count(*)
Count(expr)
Count(distinct expr)
在MySQL中通过什么子句来创建数据分组?
Group by
如何约束数据分组?
Having()
计算每个部门的平均薪水
Select avg(e.salary) from employeese group by e.department_id;
显示那些最高薪水大于 5000 的部门的部门号和最高薪水。
select e.department_id,max(e.salary) from employees e group by e.department_id HAVING MAX(e.salary)>500;
MySQL中的子查询
MySQL的子查询可以放到SQL语句中的什么位置?
Where 子句
Having子句
From 子句
使用子查询的原则是什么?
子查询放在圆括号中。
将子查询放在比较条件的右边。
在单行子查询中用单行运算符,在多行子查询中用多行运算符。
在MySQL中如何处理多行子查询?
In 等于列表中的任何成员
any 比较子查询返回的每个值
all比较子查询返回的全部值
MySQL中的正则表达式
MySQL中正则表达式的特点是什么?
使用正则表达式定义字符串的搜索条件,性能高于like
可以对整数类型或者字符类型检索
使用regexp关键字表示正则匹配
默认忽略大小写,如果区分大小写,使用binary关键字
MySQL中使用正则表达式的语法结构是什么?
MySQL中支持哪些正则表达式的模板?其对应的含义是什么?
^在正则表达式中表示开始
$在正则表达式中表示结尾
. 英文的点,它匹配任何一个字符,包括回车、换行等
“*”:星号匹配 0 个或多个字符,在它之前必须有内容。
"+":加号匹配 1 个或多个字符,在它之前也必须有内容。
“?”:问号匹配 0 次或 1 次。
“|”:表示或者含
“[a-z]”:字符范围
“^[....]”:以什么字符开头的
“[^....]”:匹配不包含在[]的字符
“{n}”:固定次数。
“{n,m}”:范围次数。
查询雇员表中名字是以k开头的雇员名字与薪水。
Select last_name,salary from employees where last_name REGEXP binary '^K';
查询雇员表中名字是以n结尾的雇员名字与薪水。
Select last_name,salary from employees where last_name REGEXP binary 'n$';
MySQL中创建普通索引
MySQL中的索引类型有哪些?
• 普通索引
• 唯一索引
• 主键索引
• 组合索引
• 全文索引
在MySQL中创建普通索引的方式有些?
直接创建索引
CREATE INDEX index_name ON table(column(length));
修改表添加索引
ALTER TABLE table_name ADDINDEX index_name(column(length));
创建表时指定索引列
CREATE TABLE`table`( COLUMNTYPE, PRIMARYKEY(`id`), INDEX index_name(column(length)) );
如何查询一个表中的索引?
Show index from table_name;
如何删除一个索引?
DROP INDEX index_name ON table;
学习主题:MySQL
学习目标:
- 1 掌握Mysql索引
- 2 掌握用户管理
- 3 掌握分页 查询过程 执行计划
- 4 了解mysql的引擎
MySQL中创建唯一索引
什么是唯一索引?
唯一索引与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值
在MySQL中如何创建唯一索引?
CREATE UNIQUE INDEX indexName ON table(column(length));
MySQL中创建主键索引
什么是主键索引?
主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建 表的时候同时创建主键索引。
在MySQL中如何创建主键索引?
修改表添加主键索引
ALTER TABLE 表名 ADD PRIMARYKEY(列名);
创建表时指定主键索引
CREATE TABLE`table`( COLUMNTYPE, PRIMARYKEY(column) );
MySQL中创建组合索引
什么是组合索引?
组合索引是指使用多个字段创建的索引,只有在查询条件中使用了创建索引时的第一个 字段,索引才会被使用(最左前缀原则)。
什么是最左前缀原则?
就是最左优先
如:我们使用表中的 name,address,salary 创建组合索引,那么想要组合索引生效, 我们只能使用如下组合: name/address/salary name/address name/ 如果使用 addrees/salary 或者是 salary 则索引不会生效。
MySQL中如何创建组合索引?
修改添加组合索引
ALTER TABLE table_name ADD INDEX index_name(column(length),column(length));
创建表时创建组合索引
CREATE TABLE`table`(COLUMNTYPE,INDEX index_name(column(length),column(length)) );
MySQL中创建全文索引
什么是全文索引?
全文索引(FULLTEXTINDEX)主要用来查找文本中的关键字,而不是直接与索引中的值 相比较。 FULLTEXT 索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的 where 语句的参数匹配。FULLTEXT 索引配合 match against 操作使用,而不是一般的 where 语句 加 like。
全文索引可以从 CHAR、VARCHAR 或 TEXT 列中作为 CREATETABLE 语句的一部分 被创建,或是随后使用 ALTERTABLE 添加。不过切记对于大容量的数据表,生成全文索 引是一个非常消耗时间非常消耗硬盘空间的做法。
如何创建全文索引?
修改添加全文索引
ALTER TABLE table_name ADD FULLTEXT index_content(content);
创建表时创建全文索引
CREATE TABLE`table`( COLUMNTYPE, FULLTEXTindex_name (column) );
如何删除全文索引?
DROP INDE Xindex_name ON table ;
ALTER TABLE table_name DROP INDEX index_name;
MySQL中使用全文索引
在MySQL中如何使用全文索引?
全 文 索 引 的 使 用 与 其 他 索 引 不 同 。 在 查 询 语 句 中 需 要 使 用 match(column) against(‘content’) 来检索数据
什么是全文解析器?
全文索引中基本单位是”词”。分词,全文索引是以词为基础的,MySQL 默认的分词是 所有非字母和数字的特殊符号都是分词符。在检索数据时我们给定的检索条件也是词。 MySQL 中默认的全文解析器不支持中文分词。如果数据含有中文需要更换全文解析器 NGRAM。
在创建全文索引时如何指定解析器?
在创建全文索引时可以指定 ngram 解析器
ALTER TABLE table_name ADD FULLTEXT index_content(content) WITH PARSER NGRAM;
MySQL中的用户管理
MySQL中有几种用户类型?
root 用户
超级管理员
由 root 用户创建的普通用户
在MySQL中如何创建用户?
CREATE USER username IDENTIFIED BY 'password';
在MySQL中如何查看用户信息?
SELECT USER,NOST FROM USER(该表位于 mysql 库中);
在MySQL中如何为用户分配权限?
新用户创建完后是无法登陆的,需要分配权限。 GRANT 权限 ON 数据库.表 TO 用户名@登录主机 IDENTIFIEDBY"密码" GRANTALLPRIVILEGESON*.*TO'username'@'localhost'IDENTIFIEDBY'password' 登陆主机: % 匹配所有主机 localhost localhost 不会被解析成 IP 地址,直接通过 UNIXsocket 连接 127.0.0.1 会通过 TCP/IP 协议连接,并且只能在本机访问; ::1 ::1 就是兼容支持 ipv6 的,表示同 ipv4 的 127.0.0.1
MySQL中有哪些权限?
ALTER: 修改表和索引。
CREATE: 创建数据库和表。
DELETE: 删除表中已有的记录。
DROP: 删除数据库和表。
INDEX: 创建或删除索引。
INSERT: 向表中插入新行。
SELECT: 检索表中的记录。
UPDATE: 修改现存表记录。
FILE: 读或写服务器上的文件。
PROCESS: 查看服务器中执行的线程信息或杀死线程。
RELOAD: 重载授权表或清空日志、主机缓存或表缓存。
SHUTDOWN: 关闭服务器。
ALL: 所有权限,ALLPRIVILEGES 同义词。
USAGE: 特殊的 "无权限" 权限
在MySQL中如何刷新权限?
每当调整权限后,通常需要执行以下语句刷新权限 FLUSHPRIVILEGES
在MySQL中如何删除用户?
DROPUSERusername@localhost
MySQL中使用Navicat管理用户
使用Navicat创建u_bjsxt用户并分配权限。
创建用户
分配权限
使用Navicat删除u_bjsxt用户。
MySQL中的分页查询
MySQL中的分页原则是什么?
• 在 MySQL 数据库中使用 LIMIT 子句进行分页查询。
• MySQL 分页中开始位置为 0。
• 分页子句在查询语句的最后侧
MySQL中分页语法是什么?
LIMIT 子句:SELECT 投影列 FROM 表名 WHERE 条件 ORDERBYLIMIT 开始位置,查询数量。
LIMITOFFSET 子句:SELECT 投影列 FROM 表名 WHERE 条件 ORDER BY LIMIT 查询数量 OFFSET 开始位置。
MySQL执行查询过程介绍
MySQL执行计划的作用是什么?
在 MySQL 中可以通过 explain 关键字模拟优化器执行 SQL 语句,从而知道 MySQL 是 如何处理 SQL 语句的。
MySQL执行查询处理过程是什么?
• 客户端向 MySQL 服务器发送一条查询请求
• 服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果。否则进 入下一阶段
• 服务器进行 SQL 解析、预处理、再由优化器生成对应的执行计划
• MySQL 根据执行计划,调用存储引擎的 API 来执行查询
• 将结果返回给客户端,同时缓存查询结果
MySQL的执行计划
执行计划中包含哪些列?
ID
select_type
table
type
possible_keys
Key
key_len
ref
rows
0Fitered
extra
在执行计划中每个列的作用是什么?
ID:查询执行顺序
Select_type: simple union primary derived subquery union
Table:显示这一行的数据是关于哪张表的
Type:显示连接使用了何种类型。从最好到最差的连接类型为 system、const、 eq_reg、ref、range、index 和 ALL。
possible_keys:查询条件字段涉及到的索引,可能没有使用。
Key:实际使用的索引。如果为 NULL,则没有使用索引。
key_len:表示索引中使用的字节数,查询中使用的索引的长度(最大可能长度),并非实际使用 长度。
Ref:显示索引的哪一列被使用了,如果可能的话,是一个常量 const。
Rows:根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数
Fitered:显示了通过条件过滤出的行数的百分比估计值
Extra:MYSQL 如何解析查询的额外信息。
MySQL的存储引擎介绍
如何查看MySQL的存储引擎?
SHOW ENGINES;
MySQL5.7中提供了哪些存储引擎?
ISAM(IndexedSequentialAccessMethod)
MyISAM
InnoDB
如何修改数据库级别的存储引擎?
修改 MySQL 的 my.ini 配置文件 C:ProgramDataMySQLMySQLServer5.7 default-storage-engine=数据库引擎名称 重启 MySQL
如何修改标级别的存储引擎?
ALTERTBALE tableNameengine=InnoDB 查询表的存储引擎 showcreatetabletable_name;
-
Mysql select查询执行过程
2017-05-02 15:41:37SQL Select语句完整的执行顺序: 1、from 子句组装来自不同表的数据,包括join 、left join ; 全字段组装 2、where 子句基于指定的... 4、执行select 中的聚促函数,例如count(*),Max(),min()函数SQL Select语句完整的执行顺序:
1、from 子句组装来自不同表的数据,包括join 、left join ; 全字段组装
2、where 子句基于指定的条件对记录进行筛选
3、group by 子句将数据划分为多个分组
4、执行select 中的聚促函数,例如count(*),Max(),min()函数
5、执行order by
6、执行select,删除多余的字段,并且选定变为别名
7、执行having 语句
8、执行limit
假定现在有2张表 ,用户表 和 用户成绩表 ,数据如下
用户表 user 用户成绩表
例子 1: 查出所有成绩都在60分以上的,平均分最高的学生名称 , 并且未删除(is_deleted = 0)
SQL :
分析 : (默认 join 在 where之前 ,这个没法分析判断)
1、where中可以带有 select中未明确标出的字段,表示where查询的时候,join的是所有字段的笛卡尔积
2、如果在having中带有a.is_deleted=0会报错,但是在order by中不会报错 ,说明 order by >select 字段过滤>having
3、在 where中加上 min(b.score)> 60 会报错,说明先where 然后再 group by ,执行聚促函数
-
mysql 10分钟一聚合_5-MySQL(函数聚合函数)
2021-01-19 22:11:22聚合计算过程:选定分组字段 – 分组 – 计算:1.选定分组字段:在 select 里;2.分组:用 group by;3.计算:根据实际情况,选定聚合函数;聚合函数1.计数:count()2.求和:sum()3.最大值/最小值:max/min()4.平均... -
arg是什么函数_035-函数、正则表达式、索引、用户管理、执行查询过程、存储引擎...
2020-11-24 03:14:591. MySQL中的数据分组(1) MySQL中有哪些常用的聚合...④MAX(arg)函数求分组中最大数据。⑤COUNT 函数返回一个表中的行数。(2) 在MySQL中通过什么子句来创建数据分组?Group by ;(3) 如何约束数据分组?Having 1. M... -
中给函数赋读权限_035-函数、正则表达式、索引、用户管理、执行查询过程、存储引擎...
2021-01-12 16:40:211. MySQL中的数据分组(1) MySQL中有哪些常用的聚合...④MAX(arg)函数求分组中最大数据。⑤COUNT 函数返回一个表中的行数。(2) 在MySQL中通过什么子句来创建数据分组?Group by ;(3) 如何约束数据分组?Having 1. M... -
MYSQL中文手册
2013-03-11 21:21:345.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 ... -
MySQL 5.1参考手册
2010-04-20 22:02:505.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 ... -
MySQL 5.1中文手冊
2009-12-11 09:43:125.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 ... -
mysql官方中文参考手册
2009-04-11 11:59:185.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 ... -
MySQL 5.1参考手册.chm
2011-12-07 13:53:375.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 ... -
MySql官方参考手册 5.1 中文版
2013-10-16 13:47:315.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 ... -
MySQL 5.1参考手册中文版
2010-04-28 14:11:545.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 ... -
mysql5.1中文手册
2008-01-09 09:54:20mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理... -
MySQL 5.1参考手册 (中文版)
2011-07-20 16:49:555.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 ... -
MySQL5.1参考手册官方简体中文版
2013-05-10 14:22:145.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 ... -
MySQL 5.1官方简体中文参考手册
2010-07-02 09:10:245.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 ... -
mysql数据库的基本操作语法
2018-12-05 16:43:13Ø 常用查询 MySQL结束符是“;”结束。 1、 显示所有数据库 show databases; 2、 删除数据库 ...Ø select 查询、function 函数 select查询语句用得最广泛、功能也最丰富。可以完成单条记录、多条记录、单表... -
Mysql中where与having的区别
2015-04-12 19:23:451. Where 是一个约束声明,使用Where约束来自数据库的数据,Where是在结果返回之前起作用的,...在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行。而where子句在查询过程中执行优先级高于聚合语 -
【MySQL-性能优化4】SQL语句的优化
2017-04-28 13:03:45通过慢查日志可以分析哪些SQL语句比较好使,分析过程中,pt-query-digest 工具要比mysqldumpslow更全面、好用。 下面重点说一下如何通过查询来分析SQL语句的执行情况。 - **1.通过explain查询和分析SQL** 实际... -
mysql的where、having和group by
2020-04-11 16:15:49当我们用到 聚合函数(sum,min,max,avg,count) 后,又需要筛选聚合结果时,having就派上用场了。 having子句与where都是设定条件筛选的语句,有相似之处也有区别。WHERE是在聚合语句执行前筛选记录的,聚合语句又要比... -
MySQL必知必会(Amazon全五星评价)--详细书签版
2013-02-05 16:15:5912.1.3 MAX()函数 78 12.1.4 MIN()函数 79 12.1.5 SUM()函数 79 12.2 聚集不同值 80 12.3 组合聚集函数 81 12.4 小结 82 第13章 分组数据 83 13.1 数据分组 83 13.2 创建分组 83 13.3 过滤分组 85 13.4 ... -
深入浅出MySQL数据库开发优化与管理维护
2010-04-15 11:10:4021.3.4 Slave上出现log event entry exceeded max_allowed_packet错误怎么办? 94 21.3.5 多主复制时,自动增长变量的冲突问题 95 21.3.6 怎么样知道slave上现在复制到什么地方了 95 21.4 需要注意的问题: 95 第22... -
scrapy存到mysql查询无数据
2020-03-04 16:49:25## 1. 问题描述 尝试使用scrapy框架爬取网站,将爬取的数据存储到mysql数据库,执行完毕之后没有报错,但是我查询数据时,显示没有数据 (代码框架参考使用该博主代码尝试运行: ... ## 2....##3....kw=%E6%A1%82%E6%9E%97... -
如何用SQL实现组内前几名的输出
2017-02-03 17:27:00关于问题如何查询组内最大的,最小的,大家或许都知道,无非是min、max的函数使用。可是如何在MySQL中查找组内最好的前两个,或者前...执行过程:从外层查询中取出一个元组,将元组相关列的值传给内层查询执行内层查... -
PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1
2016-06-14 01:25:19实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式... -
PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2
2016-06-14 01:27:23实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式... -
P2P视频技术源码(VC)
2010-12-04 15:30:18query_mysql, 执行一个mysql语句, 格式为query_mysql (local_mysql, "mysql语句, 其中格式和printf的格式相同, 例如delete from %s等", 所需要的值) query_mysql_select, 执行一个mysql的select语句, 与上面不同的是...