MySQL常用指令

本文详述了MySQL的全局变量查看与修改,字符集配置,密码规则设定,忘记密码的解决办法,用户管理,以及事务、权限、数据操纵和查询语言的使用。此外,还介绍了如何检查MySQL服务器性能,启用慢查询日志,分析SQL执行计划,以提升数据库性能。
摘要由CSDN通过智能技术生成

mysql全局变量

#查看mysql所有全局变量

show global variables;      show variables;

#修改mysql全局变量

set global variableName = ;

mysql字符集

#查看当前数据库字符集

show variables like '%char%';      show variables like 'character%';

#修改字符集

set variableName = ;

mysql密码规则配置(前提:mysql需要安装validate_password组件)

#查看用户密码配置规则

show variables like 'validate_password%';

#若查询不到用户密码配置规则,则下载 validate_password 组件

install component 'file://component_validate_password';

#卸载 validate_password 组件

uninstall component 'file://component_validate_password';

#修改mysql全局变量

set global variableName = ;

#将mysql密码安全等级改为低级(即满足密码最小长度)

set global validate_password.policy = 0;   或   set global validate_password.policy = 'LOW';

#将mysql密码安全等级改为中级(即满足密码最小长度、特殊字符个数、大小写个数、数字个数)

set global validate_password.policy = 1;  

或   set global validate_password.policy = 'MEDIUM';

#将mysql密码安全等级改为高级(即满足中级所有要求、且连续4个字符不能是字典中的字符)

set global validate_password.policy = 2;  

或   set global validate_password.policy = 'STRONG';

#刷新权限

flush privileges;

忘记密码如何登录

#第一步,在mysql配置文件中添加跳过密码认证指令

skip-grant-tables

#第二步,重启mysql服务

service mysql restart

#第三步,无密码进入mysql

mysql

#第四步,将忘记密码的用户的 authentication_string 字段置空,并刷新权限

use mysql;

update user set authentication_string = '' where user = 'userName';

flush privileges;

#第五步,将配置文件中跳过密码认证指令取消,重启mysql服务

#第六步,重新登录mysql,需要指明用户,但不用输密码

mysql -uroot -p

#第七步,修改登录用户的密码

use mysql;

alter user 'userName'@'host' identified by 'newPassword';

mysql用户管理

#方式一:创建新用户并赋予权限(适用于mysql版本5.7之前)

grant privileges on 数据库.to 'userName'@'host' identified by 'password' with grant option;

#方式二:创建新用户并赋予权限(适用于mysql版本8.0之后)

create user 'userName'@'host' identified by 'password';

grant privileges on 数据库. to 'userName'@'host';

#修改用户密码

alter user 'userName'@'host' identified by 'password';

  • mysql 5.7及以前

use mysql;

update user set authentication_string = password("newPassword") where user = 'username';

  • mysql 8.0

use mysql;

update user set authentication_string = sha1("newPassword") where user = 'username';

#删除用户

use mysql;

delete from user where user = 'username' and host = 'host';

#修改用户的远程登录权限

use mysql;

update user set host = 'host' where user = 'userName';

TCL(事务控制语言)

rollback   commit  |  set transaction

DCL(数据库控制语言)

grant  revoke (取消授权)  |  create user  |  flush privileges

DML(数据操纵语言)

select  |  update  |  insert  |  delete   

DQL(数据查询语言)

#合并多个查询语句的结果集

select语句1 union select语句2;

注:每条select语句查询结果中字段的数量必须相同、字段的顺序必须相同、字段的数据类型一致;union合并后的结果集自动去重;union all合并后的结果集允许重复;

DDL(数据库定义语言)

create  drop  alter  comment  rename  show tables  |  desc  |  use  |  truncate (先删表,再重建表)

#创建数据库

create database databaseName;

#删除数据库

drop database databaseName;

#查看存在多少个数据库

show databases;

#查看数据库的编码

show create database databaseName;

#修改数据库字符集

alter database databaseName default character set 字符集

#进入数据库

use databaseName;

#创建表

create table tableNmae (字段1, 字段2, ...);

#创建表并设置表的存储引擎、字符集、行格式、备注

create table tableNmae (字段1, 字段2, ...) engine=Innodb charset=utf8mb3 row_format=DYNAMIC comment='表的描述';

#为字段单独设置字符集和排序规则

字段名 数据类型 character set 字符集 collate 字符集排序规则

#显示简略表结构(字段)

desc tableName;

#显示详细表结构(字段)

show full fields from tableName;

#查看数据表的编码

show create table tableName;

#显示表中已建立的索引

show index from tableName;

#删除表

drop table tableName;

#清空表中所有记录,并把 auto_increment 计数置空

truncate table tableName;

#如果表存在则删除

drop table if exists tableNmae;

#查看存在多少张表

show tables;

#修改表名称

rename table oldTableName to newTableName;

#修改表的字符集(包括已存在字段的字符集)

alter table tableName convert to character set 字符集

#修改表的字符集(已存在字段的字符集不受影响)

alter table tableName charset = 字符集;   

alter table tableName default character set 字符集;

#修改表的字符集排序规则

alter table tableName collate 字符集排序规则

#在表中新增字段

alter table tableName add 字段 数据类型 约束;

#删除表中字段

alter table tableName drop column columnName;

#修改表中字段

alter table tableName change columnName newColumnName 数据类型 约束;

完整式:  alter table tableName change columnName newColumnName 数据类型 character set 字符集 collate 字符集排序规则 约束;

#为表中的字段添加索引

create index indexName on tableName(字段1,字段2,...);   

alter table tableName add index indexName(字段1,字段2,...);

#删除表中索引

drop index indexName on tableName;   

alter table tableName drop index indexName;

查看MySQL服务器性能

#语句格式

show [global | session] status like '参数';

  • global : 全局的
  • session : 当前会话的

参数

  • connection : 连接服务器次数
  • uptime : MySQL服务器的运行时间
  • slow_queries : 慢查询次数
  • innodb_rows_read : select语句的返回行数
  • innodb_rows_inserted : insert语句插入的行数
  • innodb_rows_updated : update语句更新的行数
  • innodb_rows_deleted : delete语句删除的行数
  • com_select : 查询操作执行的次数
  • com_insert : 插入操作执行的次数,批量插入只算一次
  • com_update : 更新操作执行的次数
  • com_delete : 删除操作执行的次数

慢查询日志

#查看慢查询功能是否开启

show variables like '%slow%';

#开启慢查询日志并设置时间阀值及日志文件路径

set slow_query_log = 'on';

set long_query_time = 秒数;

set slow_query_log_file = 路径;

#筛选慢查询日志记录

mysqldumpslow -s 参数 -t 数字 日志文件

-s 代表按照某种规则排序(默认降序),参数如下:

  • l  代表按照 Lock_time排序
  • t  代表按照 Query_time排序
  • r  代表按照 Rows_sent排序
  • c  代表按照相同类型的sql语句的执行次数排序

-t  代表返回前几条记录

-r  升序

-a  查询条件显示字段完整内容,而不是用‘S’表示字符串,用‘N’表示数值

查看SQL语句执行步骤及资源占用

#查看是否开启profiling

show variables like '%profiling%';

#开启profiling

set profiling = 'on';

#查看sql语句的query_id 和总耗时

show profiles;

#查看sql语句的执行步骤及资源占用

show profile 参数 for query query_id

参数:

  • ALL:所有性能开销
  • BLOCK IO:I/O开销
  • CPU:cpu开销
  • MEMORY:内存开销
  • IPC:发送和接收的开销
  • CONTEXT SWITCHES:上下文切换的开销
  • SOURCE:显示和 Source_function、Source_file、Source_line 相关的开销信息

查看SQL语句的执行计划

#格式

explain sql语句;

#执行计划包含的信息

idselect_typetabletypepossible_keyskeykey_lenrefrowextr

#id的含义

id表明数据表的读取顺序,id值越大——优先加载,id值相等——按序加载

#select_type的含义

simple单表查询
primary嵌套查询情况下,最外层的查询
subquery子查询
derived衍生表(临时表)
union合并两个select的结果集
union result从两个select语句合并后的结果集中查询

#type的含义(访问类型)

system系统表(表中只有一条记录)
const常量查询
eq_ref唯一性索引扫描,结果只有一行记录
ref非唯一性索引扫描,结果可以匹配多行记录
range范围查找,只检索给定范围的行记录
index扫描全表的索引文件
all扫描全表所有数据

#possible_keys的含义

可能用到的索引类型

#key的含义

实际用到的索引类型

#key_len的含义

实际用到的索引值大小

#ref的含义

实际用到的索引值类形

#row的含义

估计被查询优化器检索的行数

#extra的含义

Using where使用where条件
Using index使用索引读取数据
Using filesort使用文件自排序
Using index condition使用索引条件
 Backward index scan使用倒序索引
Using temporary使用临时表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值