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

本文涉及的产品
云数据库 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⊙)!!!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9天前
|
监控 关系型数据库 MySQL
Linux MySQL相关启动命令
【4月更文挑战第22天】
|
24天前
|
SQL 关系型数据库 MySQL
MySQL数据库——DML基本操作
本文介绍了MySQL中的DML基本操作,包括查询、插入、更新和删除数据。查询数据使用SELECT语句,插入数据用INSERT INTO,更新数据则依靠UPDATE,而删除数据需用DELETE FROM。这些操作是数据库管理的关键,有效提升数据处理效率和准确性。理解并熟练运用这些语句是确保数据一致性和安全性的基础。参考文献包括MySQL官方文档和W3Schools的MySQL教程。
139 2
|
3月前
|
存储 关系型数据库 MySQL
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
41 0
|
4月前
|
关系型数据库 MySQL 数据库
Python tk dos命令备份mysql数据库
Python tk dos命令备份mysql数据库
26 0
|
2月前
|
SQL 关系型数据库 MySQL
|
24天前
|
SQL 关系型数据库 MySQL
MySQL中主从复制的原理和配置命令
要原因包括提高性能、实现高可用性、数据备份和灾难恢复。了解两大线程( I/O 和 SQL)I/O线程:目的:I/O线程主要负责与MySQL服务器之外的其他MySQL服务器进行通信,以便复制(replication)数据。 功能: 当一个MySQL服务器作为主服务器(master)时,I/O线程会将变更日志(binary log)中的事件传输给从服务器(slave)。从服务器上的I/O线程负责接收主服务器的二进制日志,并将这些事件写入本地的中继日志(relay log)。 配置: 在MySQL配置文件中,你可以通过配置参数如和来启用二进制日志和指定服务器ID。log-bin server
MySQL中主从复制的原理和配置命令
|
2天前
|
关系型数据库 MySQL 测试技术
sysbench 对MySQL压测100分钟的命令
使用 `sysbench` 对 MySQL 数据库进行性能测试(压测)时,首先确保 `sysbench` 和 MySQL 数据库已经安装,并且你有一个测试数据库可以使用。下面是一个针对 MySQL 数据库进行压测的示例命令,测试时长为 100 分钟(6000 秒)。 在运行此命令之前,请确保以下内容: - 使用适当的数据库连接参数(主机、端口、用户名、密码、数据库名)。 - 根据你的需求调整测试参数(如并发数、线程数、事务数等)。 以下是一个示例命令,使用 `sysbench` 对 MySQL 数据库进行压测 100 分钟: ```shell sysbench --db-driver=m
|
3天前
|
SQL 关系型数据库 MySQL
【mysql】mysql命令使用大全,你想要的都在这里
【mysql】mysql命令使用大全,你想要的都在这里
|
4天前
|
关系型数据库 MySQL 数据库
【MySQL探索之旅】数据库的基本操作
【MySQL探索之旅】数据库的基本操作
|
4天前
|
关系型数据库 MySQL
Mysql单表查询的基本操作
Mysql单表查询的基本操作