A026_MySQL入门
2021/6/15 2:21:11
本文主要是介绍A026_MySQL入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MySQL入门
1 内容介绍
1.数据库概述(了解吹牛皮)
2.MySQL的安装与配置(掌握)-- 用的非常少
3.MySQL数据库操作与存储引擎(掌握)-- 用的非常少
4.查询操作-单表查询(掌握)-- 【常用】
2 数据库概述
2.1 数据库概念
1.数据库(Database,简称DB)
是按照数据结构来组织、存储和管理数据的仓库.保存有组织的数据的容器(通常是一个文件或一组文件)
【算法+IO+文件】
2.数据库管理系统(Database Management System,简称DBMS)—mysql
① 专门用于管理数据库的计算机系统软件;
② 能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并对数据完整性、安全性进行控制;
③ 我们一般说的数据库,就是指的DBMS,例如我们马上学习的MySQL就是其中之一;
3.数据库应用系统(Database Application System)
使用数据库技术的系统,基本上所有的信息系统都是数据库应用系统,它通常由软件、数据库和数据管理员组成。我们开发一款软件,然后这款软件能使用到数据库(和数据库有关系,有通信),那么,这一款软件我们就可以称之为数据库应用系统。
2.2 数据库的由来和发展
1.人工管理阶段
数据根本就不保存,也没有专用的软件来进行管理,往往是把数据和程序一起输入计算机进行计算。
2.文件系统阶段
有了外存磁盘的基础,数据可以保存起来了,同时可以被重复的利用。
缺点:数据冗余、一致性不强、数据联系弱。
3. 层次数据库和网状数据库技术阶段,使用指针来表示数据之间的联系。
4. 关系数据库技术阶段;
经典的里程碑阶段。代表DBMS:Oracle、DB2、MySQL、SQL Server、SyBase等。
5. 后关系数据库技术阶段;
关系型数据库存在数据模型,性能,拓展伸缩性的缺点,出现了:
ORDBMS:面向对象数据库技术。
NoSQL :结构化数据库技术。 redis
随着大数据的不断发展,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速,出色的NoSQL数据库:
MongoDB、 Oracle的NoSQL、Hadoop的HBase、Lucene/Solr等。
2.3 常见的关系型数据库服务器(DBMS)
当前我们主要学习的是关系型数据库,那么常见的关系型数据库有哪些呢?
数据库 | 公司 | 特点 |
---|---|---|
Oracle | Oracle(甲骨文/神域) | 运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域 |
DB2 | IBM | 速度快、可靠性好,适于海量数据,恢复性极强。适用于大中型企业领域。 |
SQL SERVER | 微软 | 全面,效率高,界面友好,操作容易,但是不跨平台。适用于于中小型企业领域。 |
MYSQL | AB–>SUN–>Oracle | 开源,体积小,速度快。适用于于中小型企业领域。 |
2.4 SQL概述
SQL:结构化查询语言(Structured Query Language),是关系数据库的标准语言,它的特点是:简单、灵活、功能强大。它具体包含以下6个部分:
Sql包含6个部分
一、数据查询语言(DQL):query查询[掌握]--用的多 其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。 二、数据操作语言(DML):【掌握】--用的多 其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。 三、事务处理语言(TPL):java概念 它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。 四、数据控制语言(DCL): 它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。 五、数据定义语言(DDL): 其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。 六、指针控制语言(CCL):Sql编程!.......... 它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
SQL的书写的注意事项:
- 在MySQL数据库中,SQL语句大小写不敏感
- SQL语句可单行或多行书写
- 在SQL语句中,关键字不能跨多行或缩写
- 为了提高可读性,一般关键字大写,其他小写
- 空格和缩进使程序易读
2.5 表的概念(table)
MySQL是一种关系型数据库,而关系数据库中表示非常重要的概念。那么什么是表呢?见下图:
表的特点和常用术语:
表具有固定的列和任意的行,在数学上称为”关系”;
二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为元组,相当于通常的一条记录;表中的列表示属性,称为Field,相当于通常记录中的一个数据项,也叫列、字段
3 数据库的安装与配置
3.1 安装,参考详细安装文档
安装需要注意:
1.编码选择UTF8
2.存储引擎选择多功能的
安装需要注意的地方:
配置需要注意的地方:
选择模式:
选择数据库引擎
InnoDB:支持事务的引擎(安全)
MyISAM:不支持事务的引擎(速度更快)
选择连接数据
这里端口号选择3306
选择编码:
root
3.2 启动和连接MySQL
3.2.1 启动MySQL服务
必须先在操作系统中开启MySQL的服务,才能够使用MySQL软件,可以通过如下的一些方式来启动:
- 1.cmd–dos运行中输入 services.msc 打开服务界面,找到MySQL服务;
- 2.控制面板-管理工具-服务;
- 3.Window7 开始 搜索 服务
- 4.dos命令的方式:做好笔记就行了
i.启动MySQL服务 : net start MySQL
ii.关闭MySQL服务 : net stop MySQL
提示: 如果启动出现下面的提示请使用管理员权限打开cmd在尝试
3.2.2 连接MySQL
1.在运行dos窗口或者命令提示符窗口输入如下的命令:
- i. mysql -uroot -padmin -hlocalhost -P3306
或者:mysql -uroot -padmin -h127.0.0.1 -P3306
或者cmd ipconfig/all :mysql -uroot -padmin -h192.168.1.100 -P3306
localhost 和 127.0.0.1 都代表的本机 - ii.如果数据库在本机并且端口是默认端口3306,可以这样简写:
mysql -uroot -padmin - iii.如果觉得上面这种直接暴露密码不安全,可以这样写:
mysql -uroot -p
弹出界面再输入密码就是*****
2.直接在开始 > 程序 > MySQL 中点开MySQL的命令提示符窗口, 然后输入密码即可
进入MySQL界面如下:
3.3 MySQL图形化管理软件-Navicat
注意:
当密码输错的时候,命令行窗口会一闪而过
部分操作系统使用命令会出现没有找到mysql命令,此种情况有可能是安装数据库的时候没有勾选配置cmd,重新配置一下,若配置勾选仍然是这样,就有可能是系统文件有缺失
4 MySQL数据库操作
4.1 数据库操作和存储引擎
4.1.1 数据库和数据库对象
数据库:存储数据库对象的容器。
数据库对象:存储,管理和使用数据的不同结构形式,如:表、视图、存储过程、函数、触发器、事件等。
数据库分两种:
- 系统数据库(系统自带的数据库):不能修改
information_schema:存储数据库对象信息,如:用户表信息,列信息,权限,字符,分区等信息。
performance_schema:存储数据库服务器性能参数信息。
mysql:存储数据库用户权限信息。
test:任何用户都可以使用的测试数据库。 - 用户数据库(用户自定义的数据库):一般的,一个项目一个用户数据库。
4.1.2 数据库操作
DOS查看&使用数据库
show databases; //查看数据库 use 数据库名; //使用数据库
创建数据库
create database 数据库名;
删除数据库
drop database 数据库名;
请谨慎使用以上命令,否则请节哀顺变,如下图:
注意: 每一句后面都是有分号; 结束的
4.1.3 数据库存储引擎
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
MyISAM:拥有较高的插入,查询速度,但不支持事务,不支持外键。
InnoDB:支持事务,支持外键,支持行级锁定,性能较低。[保证了数据的一致性]
它提供了具有提交、回滚和崩溃恢复能力的事务安全。但对比MyISAM,处理效率差,且会占用更多 的磁盘空间以保留数据和索引
4.2 MySQL常用列类型[Mysql数据类型----Java数据类型]
常用对照
MySql日期类型
- DATETIME(年月日,时分秒)
- DATE(年月日)
- TIMESTAMP(时间戳–范围19700101080001 - 203801191111407 基本不会用它,了解)对于到Java中也是 Date时间
- TIME:存时间,不带日期
- YEAR:只存年份
注意:在MySQL中,日期时间值使用单引号引起来。 相当于Java中Date(主要),Calender。
二进制类型
为什么存放二进制?
项目中可能会保存图片,保存电影–使用二进制,因为数据库中没有图片类型和电影类型,存的时候使用流 存进来,读取也通过流来;
开发中,我们一般存储二进制文件保存路径。
BIT:我们一般存储0或1,存储是Java中的boolean/Boolean类型的值。
在mysql中没有boolean类型 ,有Bit;
BLOB:保存的时候,根据自己的大小,选择使用的类型.一般使用BLOB就够用了.
建议:今后的项目,不要把大的文件存放到数据库,如果文件太大,会影响查询和修改的速度,还有备份数据库的时候,也很慢.
如果还是有这样的需求,还是要保存图片,保存电影,怎么办?
通过IO流写到磁盘上,然后再数据库上面保存路径;
BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB:
存放图形、声音和影像,二进制对象,0-4GB。
大量文本的存储还可以使用TEXT文本
4.3 表的操作
4.3.1 创建表
语法:
1. 先进入某一个数据库: use database_name; 2. 输入建表的SQL命令:{dos 图形化界面写命令} [ 图形化界面创建 ] CREATE TABLE 表名( 列名1 列的类型(长度) [约束], 列名2 列的类型(长度) [约束], .... 列名N 列的类型(长度) 约束 ); 注意:最后一行没有逗号 注意:不能使用MySQL中的关键字作为标识符. 比如:订单表(order),但是ORDER是SQL中排序的关键字. 解决方案: 方式1:使用反引号,把关键字引起来:`ORDER`. 方式2:开发中,习惯t_表名;
需求:
在jdbcdemo数据库中,创建表student,用来存储学生的编号,名字,年龄. USE jdbcdemo; CREATE TABLE `student` ( `id` bigint(20) PRIMARY KEY AUTO_INCREMENT, `name` varchar(20) NOT NULL, `age` int(11) SHOW TABLES; 查看数据库中存在哪些表: DESC table_name; 查看表结构: SHOW CREATE TABLE table_name; 查看表的详细定义(定义表的SQL语句) DROP TABLE table_name; 删除表: ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
讨论&思考:
为什么字符串要设定这个长度呢?
因为数据库中针对可变数据的存储需要压缩,而不可变数据的存储不需要压缩
4.3.2 查看表结构和删除表
SHOW TABLES; 查看数据库中存在哪些表: DESC table_name; 查看表结构: SHOW CREATE TABLE table_name; 查看表的详细定义(定义表的SQL语句) DROP TABLE table_name; 删除表:
4.3.3 表的约束
表的约束(针对于某一列): 1.非空约束(NK):NOT NULL,不允许某列的内容为空。 2.设置列的默认值:DEFAULT。 3.唯一约束(UK):UNIQUE,在该表中,该列的内容必须唯一。 4.主键约束:PRIMARY KEY, 非空且唯一。 5.主键自增长:AUTO_INCREMENT,从1开始,步长为1。 6.外键约束:FOREIGN KEY,A表中的外键列.A表中的外键列的值必须参照于B表中的某一列(B表主键)。 主键设计: 学生表 姓名 年龄 身份证 电话 1:单列主键,单列作为主键,建议使用。 复合主键,使用多列充当主键,不建议。 2:主键分为两种: ① 自然主键:使用有业务含义的列作为主键(不推荐使用); ② 代理主键:使用没有业务含义的列作为主键(推荐使用); i
5 查询操作-单表查询[常用]
查询操作就是从指定的数据库中查询出我们想要的数据,可以从单张表查询或者多张表联合查询,下面的查询都是单表查询。
首先我们准备好一个数据比较多表
5.1 简单查询
5.1.1 简单数据查询
语法: SELECT {*, column [alias],...} FROM table_name; 说明: SELECT 选择查询列表 FROM 提供数据源(表、视图或其他的数据源) 如果为 * 和创建表时的顺序一致。匹配所有的字段 可以自己调整顺序,在select后边加上要查询的列名。 需求: 查询所有货品信息 查询所有货品的id,productName,salePrice
5.1.2 消除结果中重复的数据。只对某一列有效
需求: 查询商品的分类编号。 语法: SELECT DISTINCT 列名,..
5.1.3 实现数学运算查询:
对NUMBER型数据可以使用算数操作符创建表达式(+ - * /) 对DATE型数据可以使用部分算数操作符创建表达式 (+ -) 运算符优先级: 1. 乘法和除法的优先级高于加法和减法 2. 同级运算的顺序是从左到右 3. 表达式中使用"括号"可强行改变优先级的运算顺序 需求: 查询所有货品的id,名称和批发价(批发价=卖价*折扣) 查询所有货品的id,名称,和各进50个的成本价(成本=costPrice) 查询所有货品的id,名称,各进50个,并且每个运费1元的成本
5.1.4 设置列名的别名
1、改变列的标题头; 2、用于表示计算结果的含义; 3、作为列的别名; 4、如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加单引号;--->英文单词 需求:查询所有货品的id,名称,各进50个,并且每个运费1元的成本(使用别名)
5.1.5 设置显示格式:
为方便用户浏览查询的结果数据,有时需要设置显示格式,可以使用CONCAT函数来连接字符串。 需求:查询商品的名字和零售价。 格式:xxx商品的零售价为:xxx SELECT CONCAT(productName,'商品的零售价为:',salePrice) AS productSalePrice FROM product;
5.2 过滤查询
5.2.1 比较运算符
语法 SELECT <selectList> FROM table_name WHERE 条件1 AND/OR 条件2; 需求: 查询货品零售价为119的所有货品信息. 查询货品名为罗技G9X的所有货品信息. 查询货品名 不为 罗技G9X的所有货品信息. 查询分类编号不等于2的货品信息 查询货品名称,零售价小于等于200的货品 查询id,货品名称,批发价大于350的货品 思考:使用where后面使用别名不行,总结select和where的执行顺序 注意:字符串和日期要用单引号扩起来. 要让MySQL查询区分大小写,可以: SELECT * FROM table_name WHERE BINARY productName='g9x' SELECT * FROM table_name WHERE BINARY productName='G9X'
5.2.2 逻辑运算
需求: 选择id,货品名称,批发价在300-400之间的货品 选择id,货品名称,分类编号为2,4的所有货品 选择id,货品名词,分类编号不为2的所有商品 选择id,货品名称,分类编号的货品零售价大于等于250或者是成本大于等于200
5.2.3 优先级规则
注意: () 小括号跨越所有运算符优先级
5.2.4 范围查询-BETWEEN AND
使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用。 语法: SELECT <selectList> FROM table_name WHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。 需求: 选择id,货品名称,批发价在300-400之间的货品 选择id,货品名称,批发价不在300-400之间的货品
5.2.5 集合查询- IN
使用IN运算符,判断列的值是否在指定的集合中。 语法: SELECT <selectList> FROM table_name WHERE 列名 IN (值1,值2....); 需求: 选择id,货品名称,分类编号为2,4的所有货品 选择id,货品名称,分类编号不为2,4的所有货品
5.2.6 空值查询 IS NULL
IS NULL:判断列的值是否为空。 语法:WHERE 列名 IS NULL; 需求: 查询商品名为NULL的所有商品信息。 注意 : 列的值是 null 和空字符串不一样,如果是空字符串 应该 = ""
5.2.7 模糊查询 LIKE
使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字: %:通配符:可表示零或多个任意的字符。 _:通配符:可表示任意的一个字符。 通配符:用来实现匹配部分值得特殊字符。 需求: 查询id,货品名称,货品名称匹配'%罗技M9_' 查询id,货品名称,分类编号,零售价大于等于200并且货品名称匹配'%罗技M1__'
5.2.8 正则表达式
在前面的章节我们已经了解到MySQL可以通过 LIKE …% 来进行模糊匹配。
MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配
需求:查找product_name字段中包含字母的所有数据:
5.3 结果排序
使用ORDER BY子句将结果的记录排序: ASC : 升序,缺省--不写默认。 DESC: 降序。 ORDER BY 语句出现在SELECT语句的最后。 语法: SELECT <selectList> FROM table_name WHERE 条件 ORDER BY 列名1 [ASC/DESC],列名2 [ASC/DESC]...; 需求: 选择id,货品名称,分类编号,零售价并且按零售价降序排序 选择id,货品名称,分类编号,零售价先按分类编号排序,再按零售价排序 查询M系列并按照批发价排序(加上别名) 查询分类为2并按照批发价排序(加上别名) 注意:别名不能使用引号括起来,否则不能排序。 讨论&思考: SELECT语句执行顺序?
5.4 分页查询 LIMIT
分页设计: 假分页(逻辑分页): 把数据全部查询出来,存在于内存中,翻页的时候,直接从内存中去截取. 真分页(物理分页): 每次翻页都去数据库中去查询数据. 假分页: 翻页比较快,但是第一次查询很慢,若数据过大,可能导致内存溢出. 真分页: 翻页比较慢,若数据过大,不会导致内存溢出. 语法: SELECT * FROM table_name LIMIT ?,?; SELECT * FROM table_name LIMIT beginIndex,pageSize; beginIndex = (currentPage-1) * pageSize; 第一个?: 表示本页,开始索引(从0开始). 第二个?: 每页显示的条数 规定:每页显示3条数据. pageSize = 3 第一页: SELECT * FROM `product` LIMIT 0, 3 第二页: SELECT * FROM `product` LIMIT 3, 3 第三页: SELECT * FROM `product` LIMIT 6, 3 第 N页: SELECT * FROM `product` LIMIT (N-1)*3, 3
5.5 聚集函数
定义:聚集函数作用于一组数据,并对一组数据返回一个值。 COUNT:统计结果记录数 如果列的值为null 不会计算在内的 MAX: 统计计算最大值 MIN: 统计计算最小值 SUM: 统计计算求和 AVG: 统计计算平均值 如果列的值为null 不会计算在内的 需求: 查询所有商品平均零售价 查询商品总记录数(注意在Java中必须使用long接收) 查询分类为2的商品总数 查询商品的最小零售价,最高零售价,以及所有商品零售价总和
5.6 分组查询 GROUP BY
可以使用GROUP BY 子句将表中的数据分成若干组,再对分组之后的数据做统计计算,一般使用聚集函数才使用GROUP BY. 语法格式: SELECT 聚集函数或者分组的列 FROM table_name WHERE 条件 GROUP BY 列名 HAVING 分组之后的条件; 注意:GROUP BY 后面的列名的值要有重复性分组才有意义; 使用HAVING字句,对分组之后的结果作筛选; 不能在 WHERE 子句中使用组函数(注意); 可以在 HAVING 子句中使用组函数; 需求: 查询每个商品分类编号和每个商品分类各自的平均零售价 查询每个商品分类编号和每个商品分类各自的商品总数。 查询每个商品分类编号和每个商品分类中零售价大于100的商品总数: 查询零售价总和大于1500的商品分类编号以及总零售价和:
6 课程总结
6.1 重点
- 理解数据库管理系统、数据库、表之间的关系
- 正确安装MySql数据库与Navicat工具
- 掌握常用的列类型
- 掌握进入MySql库的方式(dos与Navicat两种方式)
- 会导入数据到数据库中
- 表的查询一定要多写多练 ★★★★★★★★★★★★★★★★★★★★★★★★★…
6.2 难点
1、安装数据库可能会失败
2、相关的概念,理解
7 常见面试题
1、常见的数据库有那些
2、数据库的存储引擎有哪些,区别是什么
8 每日一练
1、使用命令的方式创建一个数据库和一张表,表中至少有3种以上数据类型的列
9 课后练习
今天完成上课所有的查询操作,必须熟练对应的语法
以下是习题汇总:
需求: 查询所有货品信息
需求: 查询所有货品的id,productName,salePrice
需求: 查询商品的分类编号。
需求: 查询所有货品的id,名称和批发价(批发价=卖价*折扣)
需求: 查询所有货品的id,名称,和各进50个的成本价(成本=costPirce)
需求: 查询所有货品的id,名称,各进50个,并且每个运费1元的成本
需求: 查询所有货品的id,名称,各进50个,并且每个运费1元的成本(使用别名)
需求: 查询商品的名字和零售价。格式:xxx商品的零售价为:xxx
需求: 查询货品零售价为119的所有货品信息.
需求: 查询货品名为罗技G9X的所有货品信息.
需求: 查询货品名 不为 罗技G9X的所有货品信息.
需求: 查询分类编号不等于2的货品信息
需求: 查询货品名称,零售价小于等于200的货品
需求: 查询id,货品名称,批发价大于350的货品
需求: 查询id,货品名称,批发价在300-400之间的货品(使用 and)
需求: 查询id,货品名称,分类编号为2,4的所有货品
需求: 查询id,货品名词,分类编号不为2的所有商品
需求: 选择id,货品名称,分类编号的货品零售价大于等于250或者是成本大于等于200
需求: 查询id,货品名称,批发价在300-400之间的货品(使用between)
需求: 查询id,货品名称,批发价不在300-400之间的货品
需求: 查询id,货品名称,分类编号为2,4的所有货品
需求: 查询id,货品名称,分类编号不为2,4的所有货品
需求: 查询商品名为NULL的所有商品信息。
需求: 查询id,货品名称,货品名称匹配’%罗技M9_’
需求: 查询id,货品名称,分类编号,零售价大于等于200并且货品名称匹配’%罗技M1__’
需求: 查询id,货品名称,分类编号,零售价并且按零售价降序排序
需求: 查询id,货品名称,分类编号,零售价先按分类编号排序,再按零售价排序
需求: 查询M系列并按照批发价排序(加上别名)
需求: 查询分类为2并按照批发价排序(加上别名)
需求:分页查询
每页最多3条记录: pageSize = 3:
第一页:
第二页:
第三页:
第四页:
第七页:
第N页:
需求: 查询所有商品平均零售价
需求: 查询商品总记录数(注意在Java中必须使用long接收)
需求: 查询分类为2的商品总数
需求: 查询商品的最小零售价,最高零售价,以及所有商品零售价总和
需求: 查询每个商品分类编号和每个商品分类各自的平均零售价
需求: 查询每个商品分类编号和每个商品分类各自的商品总数。
需求: 查询每个商品分类编号和每个商品分类中零售价大于100的商品总数:
需求: 查询零售价总和大于1500的商品分类编号以及总零售价和:
远程连接失败:找到MySQL自带的数据库mysql> 表user > 把 localhost改成%
10 扩展阅读
这篇关于A026_MySQL入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20部署MySQL集群入门:新手必读指南
- 2024-11-20部署MySQL集群教程:初学者指南
- 2024-11-20部署MySQL集群项目实战:新手教程
- 2024-11-20部署MySQL集群资料:新手入门教程
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程