会挽雕弓如满月,西北望,射天狼。这篇文章主要讲述超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备相关的知识,希望能为你提供帮助。
1. 数据库的基本知识
1.1 为什么要学习数据库
首先,我们要知道我们保存的数据的方式有几种呢?
- 数据保存在内存
保存在内存的方式有:集合和数组的方式。
int[] arr = new int[]{1, 2, 3, 4}; ArrayList< Integer> list = new ArrayList< Integer> (); list.add(1); list.add(2);
new
出来的对象存储在堆中,堆是内存中的一小块空间。
优点:内存速度快。
缺点:断电/程序退出,数据就清除了,不能保证永久保存数据。
- 数据保存在普通文件
优点:永久保存
缺点:查找,增加,修改,删除数据比较麻烦,效率低
给大家看看我珍藏多年的照片文件。
文章图片
- 数据保存在数据库
优点:
- 永久保存,实现数据持久化。
- 使用完整的管理系统统一管理,易于查询,通过SQL语句比较方便的操作数据库,数据库是对大量的信息进行管理的高效的解决方案
- 永久保存,实现数据持久化。
- 持久化数据到本地 。
- 可以实现结构化查询,方便管理。
- DB:数据库,存储数据的
仓库
。它保存了一系列有组织的数据。 - DBMS:数据库管理系统,又称为数据库软件(产品)。数据库是通过 DBMS创建和操作的容器,用于管理DB中的数据 。
- SQL:结构化查询语言,专门用来与数据库通信的语言即用于和DBMS通信的语言。
- 数据库存储方式是将数据放到表中,表再放到库中。
- 一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。
- 表具有一些特性,这些特性定义了数据在表中如何存储,类似java中类的设计。
- 表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似Java中的属性
- 表中的数据是按行存储的,每一行类似于Java中的对象。
文章图片
Oracle
:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购mysql。
MySQL
:开源免费的数据库,小型的数据库。已经被Oracle收购了。
DB2
:IBM公司的数据库产品,收费的。常应用在银行系统中。
SQLServer
:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
SyBase
:已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner
。
SQLite
: 嵌入式的小型数据库,应用在手机端。
现在互联网当中,较为常用的数据库:Oracle和MySQL。
在Web应用中,使用的最多的就是MySQL数据库,原因如下:
- 开源、免费。最主要就是免费,也是我们现在着重学习的数据库。
- 功能足够强大,足以应付Web应用开发(最高支持千万级别的并发访问)。
文章图片
MySQL安装地址
1.5.1 MySQL目录结构
文章图片
目录结构大概了解下,知道有什么就行啦:
│-- bin:mysql相关的可执行文件*.exe
│-- MySQLInstanceConfig.exe mysql的配置程序
│-- data: mysql自带的数据库文件(不用关注)
│-- include: c语言的头文件(不用关注)
│-- lib: 存放mysql使用到的dll动态库(相当于jar包,不用关注)
│-- my.ini mysql的配置文件,配置了mysql的相关信息
1.5.2 MySQL服务的启动和停止MySQL服务的启动和停止有两种方式:
- 计算机 -->
右击管理 -->
服务
文章图片
到这里就可以右键启动或停止MySQL服务。
- 通过cmd进入DOS命令行输入:
net start mysql 启动服务net stop mysql 关闭服务
文章图片
- 方式1:在 DOS命令行输入:
mysql -u用户名 -p密码
注意:u和p后面没有空格。
文章图片
- 方式2 : 在 DOS命令行输入:
mysql -hip地址 -u用户名 -p密码
文章图片
- 退出MySQL的方式:
exit
或quit
演示在上面两个登录也已经演示了。
文章图片
- 一个数据库就是一个文件夹
- 一张表表示一个文件
- 记录表示的是数据
1. SQL是什么(Structured Query Language) 结构化查询语言,简称SQL。专门用来与数据库通信的语言。
2. 作用
- 通过SQL语句我们可以方便的操作数据库、表、数据。
- SQL是数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。
文章图片
文章图片
其中较为重点的是:
DML
和DQL
。就是增删改查。4. 规范
- MySQL数据库的SQL语句不区分大小写,但建议关键字大写,表名、列名小写 。
- SQL语句可以单行或多行书写,以分号结尾,即每条命令最好用分号结尾
- 每条命令根据需要,可以进行缩进或换行来增强可读性。
- 注释:
- SQL特有的单行注释:#注释文字
- 单行注释:-- 注释文字
- 多行注释:/ 注释文字/
文章图片
1. 创建用户
- 语法:
CREATE USER \'用户名\'@\'主机名\' IDENTIFIED BY \'密码\';
解释:
- 用户名:将创建的用户名
- 主机名:指定该用户在哪个主机上可以登陆,如果是本地用户可用
localhost
,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
- 密码:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
-- user1用户只能在localhost这个IP登录mysql服务器 CREATE USER \'user1\'@\'localhost\' IDENTIFIED BY \'123\'; -- user2用户可以在任何电脑上登录mysql服务器 CREATE USER \'user2\'@\'%\' IDENTIFIED BY \'123\';
文章图片
- 语法:
GRANT 权限1, 权限2... ON 数据库名.表名 TO \'用户名\'@\'主机名\';
解释:
GRANT
授权关键字。
- 授予用户的权限,如
SELECT
,INSERT
,UPDATE
等。如果要授予所的权限则使用ALL
。
- 授予用户的权限,如
- 数据库名.表名:该用户可以操作哪个数据库的哪些表。如果要授予该用户对所有数据库和表的相应操作权限则可用
*
表示,如*.*
。
- \'用户名\'@\'主机名\': 给哪个用户授权。
GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON test.* TO \'user1\'@\'localhost\';
文章图片
3. 撤销授权
- 语法
REVOKE 权限1, 权限2... ON 数据库名.表名 FROM \'用户名\'@\'主机名\';
解释下:
REVOKE
撤销关键字。
REVOKE ALL ON test.* FROM \'user1\'@\'localhost\';
文章图片
- 语法:
SHOW GRANTS FOR \'用户名\'@\'主机名\';
演示下,查看user1用户的权限:
SHOW GRANTS FOR \'user1\'@\'localhost\';
文章图片
- 语法:
DROP USER \'用户名\'@\'主机名\';
演示下,删除user2
:
DROP USER \'user2\'@\'%\';
文章图片
- 语法
mysqladmin -uroot -p老密码 password 新密码-- 新密码不需要加上引号
演示下:
mysqladmin -uroot -p123 password 123456
文章图片
文章图片
1.1 创建数据库既然我们MySQL都有了对吧,那不就得创建一个属于我们自己的数据库,那怎么创建呢?这里创建的关键字为:
CREATE
。CREATE DATABASE 数据库名;
这个可以直接创建数据库,但是如果不确定数据库存不存在,存在还有必要创建吗,而且再创建也会报错,那这个时候就需要一个关键词:
IF NOT EXISTS
判断是否不存在。CREATE DATABASE IF NOT EXISTS 数据库名;
在创建的过程中,我们也可以指定一个字符集给这个数据库,默认字符集为
UTF-8
。CREATE DATABASE 数据名 DEFAULT CHARACTER SET 字符集;
直接演示下:
CREATE DATABASE stu;
CREATE DATABASE IF NOT EXISTS stu;
CREATE DATABASE stu2 CHARACTER SET gbk;
文章图片
1.2 查看数据库既然创建了数据库,那我们该如何去查看呢?这里查看的关键字为:
SHOW
。- 查看所有的数据库
SHOW DATABASES;
- 也可以查看我们对某个数据库的定义信息
SHOW CREATE DATABASE 数据名;
演示一下:
SHOW DATABASES; SHOW CREATE DATABASE stu2;
文章图片
- 修改数据库字符集
修改的关键词:ALTER
。
ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
直接演示下,把刚才设置的stu2的数据库的gbk字符集改为uft8。
ALTER DATABASE stu2 DEFAULT CHARACTER SET utf8;
文章图片
- 删除数据库
删除的关键词:DROP
。
DROP DATABASE 数据库名;
一般我们也不知道这个数据库存不存在,我们就可以添加IF EXISTS
判断是否存在。
DROP DATABASE IF EXISTS 数据库名;
演示下,把stu2的数据库删除掉。嘿嘿,删库跑路是不可能滴。
DROP DATABASE stu2; SHOW DATABASES;
文章图片
- 我们现在可以查看正在使用的数据库的是什么
SELECT DATABASE();
- 接下来就可以使用/切换数据库,就可以进行我们以后的创建表格,或者对表增删改查。
USE 数据库名;
演示下:
SELECT DATABASE(); USE stu; SELECT DATABASE();
文章图片
DDL语句操作数据库 | 关键字 |
---|---|
创建 | CREATE DATABASE 数据库名; |
修改 | ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集; |
查看 | SHOW DATABASES; |
删除 | DROP DTABASE 数据库名; |
文章图片
2.1 创建表我们在创建数据库后,就相当于创建了一个文件夹,那我们就需要创建一个可以来保存的数据的文件对吧,那接下来我们先来创建表。创建的关键词:
CREATE
。CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2);
是不是觉得这样写觉得不好看,上面有提到SQL规范中,可以适当的缩进或换行来增加可读性:
CREATE TABLE 表名 (
字段名1 字段类型1,
字段名2 字段类型2
);
而且如果我们无法判断这个表是否存在,我们也可以用
IF NOT EXISTS
这个关键词来判断是否不存在。CREATE TABLE IF NOT EXISTS 表名 (字段名1 字段类型1, 字段名2 字段类型2);
那这其中的字段名是我们起的名字,那这个字段类型有什么类型呢:
- MySQL常用的数据类型有:
- int:整型。
- double:浮点型。
- varchar:字符串类型。
- date:日期类型。只有年月日,没有时分秒。"
yyyy-MM-dd
" 。
- 比较详细的数据类型如下:
- 整型:
文章图片
- 字符串类型:
文章图片
- 日期和时间类型
文章图片
- 整型:
CREATE TABLE student (
id INT,
name VARCHAR(20),
birthday DATE
);
文章图片
后面我直接用SQLyog这个软件演示吧,毕竟这个DOS命令敲起来没有这个图像客户端方便。
如果没有安装SQLyog的,可以去上面我在安装MySQL里面有教大家,一般如果全跟着完成的话,就有了。如果你还想要DOS命令来训练,当然我不反对。嘿嘿!加油。
2.2 查看表既然我们创建了表,那就看看我们创建了什么表对吧。查看的关键词:
SHOW
,DESC
。- 查看我们正在使用的数据库中的所有表:
SHOW TABLES;
- 查看表结构即可以看到我们创建表时候的数据类型和字段:
DESC 表名;
- 查看创建表的SQL语句:
SHOW CREATE TABLE 表名;
演示如下:
SHOW TABLES; DESC student; SHOW CREATE TABLE student;
比较方便的我还是用DOS命令演示更为简单。
文章图片
CREATE TABLE 表名 LIKE 其他表;
演示下:
CREATE TABLE s1 LIKE student;
SHOW TABLES;
DESC s1 ;
文章图片
2.4 删除表直接删除表
DROP TABLE 表名;
如果无法判断表名是否存在,就可以使用
IF EXISTS
这个关键词来判断是否存在。DROP TABLE IF EXISTS 表名;
演示一下:
SHOW TABLES;
DROP TABLE s1;
SHOW TABLES;
DROP TABLE s1;
DROP TABLE IF EXISTS s1;
文章图片
2.5 修改表一般来说,我们创建了表,就不怎么需要修改了,但是需求总是会有。修改的关键词:
ALTER
。而修改的语句一般都是ALTER TABLE 表名 xxx
。- 添加表一列,添加关键词
ADD
。
ALTER TABLE 表名 ADD 字段名 字段类型;
演示,在student表中增加一个age,类型为int的一列。
ALTER TABLE student ADD age INT; DESC student;
文章图片
- 修改字段类型,添加关键词
MODIFY
。
ALTER TABLE 表名 MODIFY 字段名 新类型;
演示一下,把student表中的name字段的改成varchar(10)。
ALTER TABLE student MODIFY name VARCHAR(10); DESC student;
文章图片
- 修改字段名,关键词:
CHANGE
。
ALTER TABLE 表名 CHANGE 老字段名 新字段名 类型;
演示一下,把student表中的name字段的改成sName,类型为varchar(20)。
ALTER TABLE student CHANGE NAME sName VARCHAR(20); DESC student;
文章图片
- 删除字段,删除的关键词:
DROP
。
ALTER TABLE 表名 DROP 字段名;
演示下,删除student表中的字段age。
ALTER TABLE student DROP age; DESC student;
文章图片
- 修改表名,即重命名表名,关键词:
RENAME
。
RENAME TABLE 表名 TO 新表名;
演示一下,将student表改名成student2表。
RENAME TABLE student TO student2; SHOW TABLES;
文章图片
- 修改表的字符集,没有设置字符集,默认为utf8。
ALTER TABLE 表名 DEFAULT CHARACTER SET 新字符集;
演示一下,将student2表的编码修改成gbk> 。
ALTER TABLE student2 DEFAULT CHARACTER SET gbk;
DDL语句操作表 | 关键字 |
---|---|
创建 | CREATE TABLE 表名; |
修改 | ALTER TABLE表名 xxx; |
查看 | SHOW TABLES; |
删除 | DROP TABLE 表名; |
CREATE TABLE beauty(
id INT,
NAME VARCHAR(20),
sex CHAR(2),
birthday DATE,
phone VARCHAR(15)
);
这样就先把表创建了,接下来的操作都是对这里面操作。
下面的学习,都对表进行操作更新,现在还没有到学习查询语句,这里先教大家一句查看表中的所有数据:
SELECT * FROM beauty;
1. 插入数据插入方法有两种,我们一个一个学习:
插入关键词:
INSERT INTO
。1.1 第一种插入方式
- 插入全部字段
- 所有的字段名都写出来:
INSERT INTO 表名 (字段名1, 字段名2, 字段名3, ...) VALUES (值1, 值2, 值3, ...);
- 如果按照原来的顺序添加字段值的话,可以不写字段名,直接添加数据:
INSERT INTO 表名 VALUES (值1, 值2, 值3, ...);
- 所有的字段名都写出来:
- 插入部分数据
只需要指定要插入数据的字段,而且可以随意调换位置,但是字段值得对应列的类型,如果没有添加数据的字段则会使用NULL:
INSERT INTO 表名 (字段名1, 字段名2...) VALUES (字段值1, 字段值2);
- 上面的SQL语句一一演示下:
- 写所有的字段名。
INSERT INTO beauty (id, NAME, sex, birthday, phone) VALUES(1, "唐艺昕", \'女\', "1987-10-9", "1899888823"); SELECT * FROM beauty;
文章图片
- 而且这里插入值的类型必须要与列的类型一致或兼容。
INSERT INTO beauty (id, NAME, sex, birthday, phone) VALUES(2, 唐艺昕, 女, "1987-10-9", 1899888823);
文章图片
- 不写字段名。并且可以为NULL值的列可以插入NULL。
INSERT INTO beauty VALUES (2, "迪丽热巴", \'女\', "1992-6-3", "1899888824"), (3, "古力娜扎", \'女\', "1992-5-2", NULL); SELECT * FROM beauty;
文章图片
- 插入部分数据。如果没有插入数据的字段,则会显示为默认值,没有设置默认值,则为NULL。
INSERT INTO beauty (id, NAME, sex) VALUES(4, "杨幂", \'女\'); SELECT * FROM beauty;
文章图片
- 写所有的字段名。
- 特点:
- 字段类型和值类型一致或兼容,而且一对一的对应,个数相同,类型相同。
- 可以不写一些字段名,添加的时候默认为NULL,除非有设置默认值。
- 语法:
INSERT INTO 表名 set 字段=值, 字段2=值2,...;
- 应用:
重新添加一条数据:
INSERT INTO beauty SET id=5, NAME=\'诸葛大力\', sex=\'女\', birthday=\'1995-05-23\'; SELECT * FROM beauty;
文章图片
- 方式一支持多行插入,而方式二不支持。
INSERT INTO beauty VALUES (6, \'娄艺潇\', \'女\', \'1988-12-27\', \'16689540123\'), (7, \'陈美嘉\', \'女\', \'1985-11-21\', \'16689540123\'), (8, \'刘萌萌\', \'女\', \'1990-10-16\', \'16689540123\'); SELECT * FROM beauty;
文章图片
- 方式一支持子查询(后面详细讲解),而方式二不支持。
INSERT INTO beauty (id, NAME , sex ,birthday) SELECT9, \'赵雯\', \'女\', \'1987-10-28\'; SELECT * FROM beauty;
文章图片
1.4 在DOS命令窗口操作数据乱码问题
文章图片
具体出现的原因:
- 因为我们MySQL的客户端设置编码是utf8,而系统的DOS命令行编码是gbk,编码不一致导致的乱码。
文章图片
- 在DOS命令行下输入:
set names gbk;
就是让现在服务器使用gbk编码。
文章图片
- 修改MySQL安装目录下的
my.ini
文件,重启服务所有地方生效。此方案将所有编码都修改了,所以并不推荐。
文章图片
UPDATEA
。- 我们可以不带条件修改数据,这种相当于把所有这个字段名都修改了。
UPDATE 表名 SET 字段名=字段值;
- 也可以带条件修改数据,这种相当于只是在
WHERE
后条件找到的行修改其字段名。
UPDATE 表名 SET 字段名=字段值 WHERE 条件;
总结语法可以这么写:
UPDATE 表名 SET 字段名=字段值 【WHERE 条件】; 【】其中的代表可写可不写。
- 具体操作演示一下:
- 不带条件修改数据,将所有的性别改成男。当然女神们怎么可能是男的呢?后面我就修改回来啦。
UPDATE beauty SET sex = \'男\'; SELECT * FROM beauty; UPDATE beauty SET sex = \'女\';
文章图片
- 带条件修改数据,将id号为5的女神姓名改为成果。其实诸葛大力真名就是成果。
UPDATE beauty SET NAME = \'成果\' WHERE id = 5; SELECT * FROM beauty;
文章图片
- 一次修改多个列,把id号为5的女神姓名改为诸葛大力,并且phone改为
155673412312
。
UPDATE beauty SET NAME = \'诸葛大力\', phone = \'155673412312\' WHERE id = 5; SELECT * FROM beauty;
文章图片
- 不带条件修改数据,将所有的性别改成男。当然女神们怎么可能是男的呢?后面我就修改回来啦。
- 第一种的关键词:
DELETE
。可以带WHERE进行筛选。 - 第二种的关键词:
TRUNCATE
。不可以带WHERE进行筛选。直接就是表中数据全部删除。
- 带WHERE筛选条件删除数据,删除掉满足条件的数据。
DELETE FROM 表名 WHERE 条件;
- 不带WHERE筛选条件删除数据,直接相当于删除表中所有数据。嘿嘿删表删库跑路,真的刺激。
DELETE FROM 表名;
- 具体演示下:
- 带条件删除数据,删除id为9的记录
DELETE FROM beauty WHERE id = 9; SELECT * FROM beauty;
文章图片
- 可以删除多条的记录吗:
DELETE FROM beauty WHERE id = 8, id = 7; 这样肯定不行的,会报错: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \' id = 7\' at line 1所以可以这样做: DELETE FROM beauty WHERE id IN (7, 8); SELECT * FROM beauty;
文章图片
- 不带条件删除数据,删除表中的所有数据,这里的表我是有备份的,可以看我操作即可,等后面学到备份再来删除不香吗,或者你还想,然后再添加进去即可。
DELETE FROM beauty; SELECT * FROM beauty;
文章图片
- 带条件删除数据,删除id为9的记录
- 语法:
TRUNCATE TABLE 表名;
- 应用:
TRUNCATE TABLE beauty; SELECT * FROM beauty;
文章图片
- TRUNCATE不能加WHERE条件,而DELETE可以加WHERE条件。
- TRUNCATE的效率高一点点 。
很好理解,这个TRUNCATE是不可以加WHERE条件,所以相对于DELETE来说,执行效率就快上一点。
- TRUNCATE删除带自增长的列的表后,如果再插入数据,数据从
1
开始 。
而DELETE删除带自增长列的表后,如果再插入数据,数据从上一次的断点处开始 ,即上次的删除前的自增长列位置来到1000
,不管是删除了全部,还是就一些,下次添加的话就是从1001
开始了 。自增长列后续会讲解到。
- TRUNCATE没有返回值,而DELETE有返回值。
我们分别执行以下命令:
DELETE FROM beauty WHERE id > 5; TRUNCATE TABLE beauty;
文章图片
- TRUNCATE删除不能回滚,DELETE删除可以回滚。这个回滚体现在事务中,事务后续也会讲解到。不要慌!
DML语句操作表 | 关键字 |
---|---|
插入 | 第一种:INSERT INTO 表名 (字段1, 字段2...) values(字段值1, 字段值2....);< br /> 第二种:INSERT INTO 表名 SET 字段1 = 字段值1,字段2 = 字段值2; |
修改 | UPDATE 表名 SET 字段1= 字段值1, 字段2 = 字段值2... 【WHERE 筛选条件】; |
删除 | 第一种:DELETE FROM 表名 【WHERE 筛选条件】; < br /> 第二种:TRUNCATE TABLE 表名; |
文章图片
相信各位看官看到这里都会MySQL有了一定了解吧,当然还没有涉及到的,由于篇幅限制,查询篇我放在了下一篇中啦。查询对我们还是挺重要,对于初级程序员来说,使用最多就是查询语句了。
而我们在实际应用,MySQL还是占非常大的一个主流,我们今天了解一个MySQL的基础系列,对以后的一些高级应用,调优都是有一定的帮助。并且面试中比较常问的面试题中都有MySQL的身影,所以MySQL的学习也是必不可少滴!
我们还是小小的总结下吧:
DCL: 主要对用户的权限的操作
创建用户: CREATE USER \'用户名\'@\'主机名\' IDENTIFIED BY \'密码\';
授权用户: GRANT 权限1, 权限2... ON 数据库名.表名 TO \'用户名\'@\'主机名\';
撤销授权: REVOKE 权限1, 权限2... ON 数据库名.表名 FROM \'用户名\'@\'主机名\';
查看权限: SHOW GRANTS FOR \'用户名\'@\'主机名\';
删除用户: DROP USER \'用户名\'@\'主机名\';
DDL:库和表的管理。
创建数据库: CREATE DATABASE 数据库名;
创建表: CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2);
修改数据库: ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
修改表: ALTER TABLE 表名 一些操作;
删除数据库: DROP DATABASE 数据库名;
删除表: DROP TABLE 表名;
DML:主要对表中的数据进行增删改。
插入数据: INSERT INTO 表名 (字段名1, 字段名2, 字段名3, ...) VALUES (值1, 值2, 值3, ...);
修改数据: UPDATE 表名 SET 字段名=字段值;
删除数据: DELETE FROM 表名;
当然啦,更多语句命令的一些细节,希望大家可以仔细学习!
注: 如果文章有任何错误和建议,请各位大佬尽情留言!如果这篇文章对你也有所帮助,希望可爱亲切的您给个三连关注下,非常感谢啦!
【超硬核学习手册系列1——深入浅出MySQL的知识点,学习收藏必备】
文章图片
推荐阅读
- RocketMQ基础概念剖析,并分析一下Producer的底层源码
- NameServer 核心原理解析
- 灵活运用分布式锁解决数据重复插入问题
- #导入MD文档图片#超硬核学习手册系列2查询篇——深入浅出MySQL的知识点,学习收藏必备
- 从RocketMQ的Broker源码层面验证一下这两个点
- 详细了解 InnoDB 内存结构及其原理
- SQL练习(通过练习写出有意思有用的sql)
- #导入MD文档图片#windows下如何安装配置删除MySQL数据库
- Redis哨兵(Sentinel)集群部署