【收藏级】MySQL 100条命令,基本操作的所有内容(常看常新)(五)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【收藏级】MySQL 100条命令,基本操作的所有内容(常看常新)(五)

13.4、案例

将学生学号为“1631607101”的C语言成绩加10分,如果发现加10分后的成绩大于100分,则执行事务的回滚操作,否则提交事务。

mysql> select * from t_score1;
+----------+------------+-----------+-------+
| score_id | stu_id     | course_id | grade |
+----------+------------+-----------+-------+
| 1001     | 1631607101 | 16610001  |    92 |
| 1002     | 1631607101 | 16610002  |    75 |
| 1003     | 1631607101 | 16610003  |    88 |
| 1004     | 1631607102 | 16610004  |   100 |
| 1005     | 1631607102 | 16610005  |    99 |
| 1006     | 1631611104 | 16610003  |    76 |
| 1007     | 1631611104 | 16610004  |   107 |
| 1008     | 1631611104 | 16610005  |    97 |
| 1009     | 1631611104 | 16610006  |    90 |
| 1010     | 1731613106 | 16610009  |    75 |
| 1011     | 1731613107 | 16610009  |    97 |
| 1012     | 1631601101 | 16610002  |    86 |
| 1013     | 1631601102 | 16610003  |    85 |
| 1014     | 1631601103 | 16610004  |    90 |
| 1015     | 1631601104 | 16610005  |    80 |
| 1016     | 1631601105 | 16610006  |    79 |
| 1017     | 1631601105 | 16610007  |    98 |
| 1018     | 1631607101 | 16610001  |  NULL |
+----------+------------+-----------+-------+
18 rows in set (0.00 sec)
mysql> begin;
mysql> update t_score1 set grade=grade+10 where stu_id="1631607101";
mysql> select * from t_score1 where stu_id="1631607101" and grade < 100;
+----------+------------+-----------+-------+
| score_id | stu_id     | course_id | grade |
+----------+------------+-----------+-------+
| 1002     | 1631607101 | 16610002  |    85 |
| 1003     | 1631607101 | 16610003  |    98 |
+----------+------------+-----------+-------+
--回滚后,数据就没有改变
mysql> rollback;  --如果这里换成commit; 代表事务结束。
mysql> select * from t_score1 where stu_id="1631607101" and grade < 100;
+----------+------------+-----------+-------+
| score_id | stu_id     | course_id | grade |
+----------+------------+-----------+-------+
| 1001     | 1631607101 | 16610001  |    92 |
| 1002     | 1631607101 | 16610002  |    75 |
| 1003     | 1631607101 | 16610003  |    88 |
+----------+------------+-----------+-------+
3 rows in set (0.00 sec)
--执行commit;后,就无法回到commit之前,代表事务结束。
mysql> commit;


十四、用户管理与权限管理

语法:CREATE USER user_name [IDENTIFIED BY [PASSWORD] “user_password”]

user_name:创建的账号名,完整的账号由用户名和主机组成,形式为'user_name'@'localhost'

14.1、用户管理

14.1.1、创建用户

1、默认所以主机

create user test_1 identified by '123456';

2、 指定用户的主机为localhost

create user test1@localhost identified by '123456';

14.1.2、修改用户密码

14.1.3、删除用户

drop user user_name;

14.2、权限管理

14.2.1、授予权限

GRANT priv_type[(column_list)] ON database.table TO user [IDENTIFIED BY [PASSWORD] 'password'] [,user IDENTIFIED BY [PASSWORD] 'password'] ... [WITH with-option['with-option']...]

priv_type:授权类型(ALL表示所有的权限)。

column_list:指定列名,表示权限作用在那些列上,不指定作用于整个表。

database.table:指定数据库和表。

user:用户名,完整的账号由用户名和主机组成,形式为'user_name'@'localhost'

IDENTIFIED BY:指定为账户设置密码,已经存在的用户可不指定密码。

password:表示用户新密码,已经存在的用户可以不用密码。

WITH with-option[‘with-option’]:指定授权选项。

1、使用grant语句创建用户soft,密码为123456,并授予对所有数据库所有表的select,insert,update权限和转授权限(grant option)

grant select,insert,update on *.* to soft@localhost identified by '123456' with grant option;

2、使用grant语句,并授予对所有数据库所有表的select,insert,update权限

grant select,insert,update on *.* to soft;

14.2.1.1、查看权限

语法:GRANT priv_type[(column_list)] ON [object_type]{table_name | * | *.* | db_name.*} FROM user [,user]...

select * from user;

普遍用户也可执行

show grants for ‘user'@'host';

14.2.2、撤销权限

revoke select,insert,update on *.* from soft@localhost;

十五、备份、恢复数据库

15.1、备份

语法:

E:\db_backup>mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

备份一个数据库

MYSQLDUMP -u user_name -p db_name table_name1 table_name2... > backup_name.sql

user_name:用户名

db_name:选择备份的数据库

table_name:选择备份数据库里面的表

backup_name:生成的备份文件名

备份多个数据库

MYSQLDUMP -u user_name -p --databases db_name1 db_name2... > backup_name.sql

备份所有数据库

MYSQLDUMP -u user_name -p --all-databases > backup_name.sql

15.2、恢复

MYSQL -u user_name -p [db_name] < backup_name.sql

db_name:用来指定数据库的名称,指定数据库时,还原该数据库下的表。不指定时,表示还原备份文件中的所有数据。

十六、日志

MySQL四种日志类型:错误日志、查询日志、慢查询日志、二进制日志

四种类型的日志对应的文件,保存在mysql数据目录data目录下,可以使用show variables命令查看

错误日志默认开启,其它三种日志默认打开。

16.1、错误日志

错误日志记录着 MySQL服务启停及运行时的报错信息, 如:运行的sql语句语法错误。

错误日志功能默认开启且无法被禁止。

查看“错误日志”是否开启

--使用show variables命令后可以看到日志文件存放位置:D:\APP\Pro_Software\MYSQL\data\
show variables like "%log_erro%";
+----------------------------+----------------------------------------------------+
| Variable_name              | Value                                              |
+----------------------------+----------------------------------------------------+
| binlog_error_action        | ABORT_SERVER                                       |
| log_error                  | D:\APP\Pro_Software\MYSQL\data\DESKTOP-T92IEER.err |
| log_error_services         | log_filter_internal; log_sink_internal             |
| log_error_suppression_list |                                                    |
| log_error_verbosity        | 2                                                  |
+----------------------------+----------------------------------------------------+
5 rows in set, 1 warning (0.00 sec)

16.2、查询日志

查询日志记录着MySQL服务器的启停信息、客户端连接信息、增删查改数据记录的SQL语句

查询日志默认关闭,由于查询日志会记录用户的所有操作,故如若开启查询日志,会占用较多磁盘空间,查询日志建议定义清理,以节省磁盘空间。

查看“查询日志”是否开启

--使用show variables命令后可以看到日志文件存放位置:D:\APP\Pro_Software\MYSQL\data\
mysql> show variables like "%general%";
+------------------+----------------------------------------------------+
| Variable_name    | Value                                              |
+------------------+----------------------------------------------------+
| general_log      | OFF                                                |
| general_log_file | D:\APP\Pro_Software\MYSQL\data\DESKTOP-T92IEER.log |
+------------------+----------------------------------------------------+
2 rows in set, 1 warning (0.00 sec)
--开启
mysql> set global general_log = ON;
Query OK, 0 rows affected (0.00 sec)
--关闭
mysql> set global general_log = OFF;
Query OK, 0 rows affected (0.00 sec)

16.3、慢查询日志

慢日志记录执行时间超过指定时间的各种操作

通过分析慢查询日志能有效定位MySQL各指令执行的性能瓶颈。

查看“慢查询日志”是否开启

--使用show variables命令后可以看到日志文件存放位置:D:\APP\Pro_Software\MYSQL\data\
mysql> show variables like "%slow%";
+-----------------------------+---------------------------------------------------------+
| Variable_name               | Value                                                   |
+-----------------------------+---------------------------------------------------------+
| log_slow_admin_statements   | OFF                                                     |
| log_slow_extra              | OFF                                                     |
| log_slow_replica_statements | OFF                                                     |
| log_slow_slave_statements   | OFF                                                     |
| slow_launch_time            | 2                                                       |
| slow_query_log              | OFF                                                     |
| slow_query_log_file         | D:\APP\Pro_Software\MYSQL\data\DESKTOP-T92IEER-slow.log |
+-----------------------------+---------------------------------------------------------+
7 rows in set, 1 warning (0.01 sec)
--开启
mysql> set global slow_query_log=on;
Query OK, 0 rows affected (0.00 sec)
--关闭
mysql> set global slow_query_log = off;
Query OK, 0 rows affected (0.00 sec)
--测试
mysql> select sleep(10);
+-----------+
| sleep(10) |
+-----------+
|         0 |
+-----------+
1 row in set (10.01 sec)

16.4、二进制日志

二级制日志以二进制的形式记录数据库除了查询以外的各种操作也叫变更日志。主要用于记录修改数据或有可能引起数据改变的MySQL语句,并且记录着语句发生时间、执行时长、操作的数据等

查看“二进制日志”是否开启

--使用show variables命令后可以看到日志文件存放位置:D:\APP\Pro_Software\MYSQL\data\
mysql> show variables like "%log_bin%";
+---------------------------------+---------------------------------------------+
| Variable_name                   | Value                                       |
+---------------------------------+---------------------------------------------+
| log_bin                         | ON                                          |
| log_bin_basename                | D:\APP\Pro_Software\MYSQL\data\binlog       |
| log_bin_index                   | D:\APP\Pro_Software\MYSQL\data\binlog.index |
| log_bin_trust_function_creators | OFF                                         |
| log_bin_use_v1_row_events       | OFF                                         |
| sql_log_bin                     | ON                                          |
+---------------------------------+---------------------------------------------+
6 rows in set, 1 warning (0.00 sec)
--查询binlog文件名
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000119 |    57106 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

总结

我是秋意临,欢迎大家一键三连、加入云社区

我们下期再见(⊙o⊙)!!!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
存储 关系型数据库 MySQL
初步了解MySQL数据库的基本命令
初步了解MySQL数据库的基本命令
43 0
|
1月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
2月前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
28 3
|
2月前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
63 4
|
1月前
|
关系型数据库 MySQL 数据库
Mysql 常用命令
Mysql 常用命令
22 0
|
4月前
|
存储 关系型数据库 MySQL
(十五)MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~
相信大家在编写SQL时一定有一个困扰,就是明明记得数据库中有个命令/函数,可以实现自己需要的功能,但偏偏不记得哪个命令该怎么写了,这时只能靠盲目的去百度,以此来寻找自己需要的命令。
159 28
|
4月前
|
SQL 关系型数据库 MySQL
MySQL删除表数据、清空表命令(truncate、drop、delete 区别)
MySQL删除表数据、清空表命令(truncate、drop、delete区别) 使用原则总结如下: 当你不需要该表时(删除数据和结构),用drop; 当你仍要保留该表、仅删除所有数据表内容时,用truncate; 当你要删除部分记录、且希望能回滚的话,用delete;
|
4月前
|
SQL 关系型数据库 MySQL
mysql性能调优:EXPLAIN命令21
【7月更文挑战第21天】掌握SQL性能调优:深入解析EXPLAIN命令的神奇用法!
61 1
|
4月前
|
存储 SQL Cloud Native
云原生数据仓库使用问题之运行MySQL命令发现中文内容变成了问号,该如何解决
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
5月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之 MySQL数据库中,执行delete命令删除数据后,存储空间通常不会立即释放,该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
127 2