数据库应用:MySQL高级语句(一)

目录

一、理论

1.常用查询

2.函数

3.进阶查询

二、实验

1.普通查询

2.函数

3.进阶查询

三、问题

[1.MySQL || 运算符不生效](#1.MySQL || 运算符不生效)

四、总结


一、理论

1.常用查询

常用查询包括:增、删、改、查;

对 MySQL 数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。

(1)selelct

select,显示表格中一个或数个字段的所有数据记录。

bash 复制代码
 语法: SELECT "字段" FROM "表名";
 ​
 示例:
 select store_name from store_info;
 select store_name,sales from store_info;

(2)distinct

istinct,不显示重复的数据记录。

注意:关系型数据库,单次只能对一个字段去重。

bash 复制代码
 SELECT DISTINCT "字段" FROM "表名";
 ​
 示例:
 select distinct store_name from store_info;    #对商店名称进行去重
 select distinct date from store_info;        #对日期字段进行去重

(3)where

where,有条件查询。

bash 复制代码
 SELECT "字段" FROM 表名" WHERE "条件";
 ​
 ​
 示例:
 select * from store_info where sales > 1000; #查找销售额大于1000的数据记录
 select store_name from store_info where sales > 1000;  #查找销售额大于1000的商店名称

(4)and 和 or

and:且。

or:或。

bash 复制代码
 SELECT "字段" FROM "表名" WHERE "条件1"  AND "条件2";
 SELECT "字段" FROM "表名" WHERE "条件1"  OR "条件2";

示例:

bash 复制代码
 #查询销售额大于500且小于1000的数据记录。
 select * from store_info where sales > 500 and sales < 1000 ; 
 ​
 #查询销售额大于200且小于500的记录,或者销售额大于1000的记录。
 select * from store_info where sales > 1000 or (Sales < 500 and Sales > 200); 
 ​
 #查询销售额大于200且小于500的商店名,或者销售额大于1000的商店名。
 select store_name from store_info where sales > 1000 or (Sales < 500 and Sales > 200); 

(5)in

in,显示已知的值的数据记录。

bash 复制代码
 SELECT "字段" FROM "表名" WHERE "字段" IN ('值1', '值2', ...);   #in,遍历一个取值列表
 SELECT "字段" FROM "表名" WHERE "字段" NOT IN ('值1', '值2', ...);  #not in取反,查询不在这个范围内的值

示例:

bash 复制代码
#查询商店名为"Xian",以及商店名为"Chengdu"的记录。
 select * from store_info where store_name in ('Xian','Chengdu');    
 ​
查询商店名称不是"Xian"、不是"Chengdu"的记录。
 select * from store_info WHERE store_name not in ('Xian','Chengdu');

(6)between

between,显示两个值范围内的数据记录。

bash 复制代码
 SELECT "字段" FROM "表名" WHERE "字段" BETWEEN '值1' AND '值2';

实例

bash 复制代码
 #查询销售额在500~1500之间的数据记录(包含500和1500)
 select * from store_info where sales between 500 and 1500;
 ​
 #查询店铺开业日期在2020-12-06到2020-12-10之间的记录(包含这两个日期)
 select * from store_info where date between '2023-07-16' and '2023-07-20';

(7)通配符

通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来。

通常通配符都是跟 LIKE 一起使用的,并协同 WHERE 子句共同来完成查询任务。常用的通配符有两个,分别是:

bash 复制代码
 %:百分号表示零个、一一个或多个字符
 _:划线表示单个字符

示例:

bash 复制代码
#查询名字是s开头的记录
mysql> select Store_name from store_info where Store_name like 's%';

#查询名字里是X和an中间有一个字符的记录
mysql> select Store_name from store_info where Store_name like 'X_an';

#查询名字中间有h的记录
mysql> select Store_name from store_info where Store_name like '%h%';

#查询Shang后面3个字符的名字记录
mysql> select Store_name from store_info where Store_name like 'Shang___';

#通配符"%"和"_"不仅可以单独使用,也可以组合使用
查询名字以s开头的记录
mysql> select Store_name from store_info where Store_name like 'S%_';

(8)like

like,匹配一个模式来找出我们要的数据记录。

bash 复制代码
 SELECT "字段" FROM "表名" WHERE "字段" LIKE {模式} ;

示例:

bash 复制代码
 #查询商店名称包含字符串"ng"的记录
 select * from store_info where store_name like '%os%';
 ​
 #;查询商店名称以字符串"ia"结尾的记录
 select * from store_info where store_name like '%on';
 ​
 #查询商店名称的第二、第三个字符为"ha"的记录
 select * from store_info where store_name like '_os%';

(9)order by

order by,按关键字排序。

注意:

① 一般对数值字段进行排序。

② 如果对字符类型的字段进行排序,则会按首字母排序。

bash 复制代码
 SELECT "字段" FROM "表名" [WHERE "条件"] ORDER BY "字段" [ASC|DESC] ;
 #ASC是按照升序进行排序的,是默认的排序方式。
 #DESC是按降序方式进行排序。

示例:

bash 复制代码
  #查看store_info表中的所有记录,按销售额进行升序排列。
 select * from store_info order by sales ASC;    #ASC可以不加,默认升序
 ​
 #查看store_info表中的所有记录,按销售额进行倒序排列。
 select * from store_info order by sales desc;
 ​
 #获取销售额最大的那行数据记录。即先按销售额进行倒序排列,之后取第一行记录。
 select * from store_info order by sales desc limit 1;

(10) limit

limit 限制输出的结果记录,在使用 MySQL SELECT 语句进行查询时,结果集返回的是所有匹配的记录(行)。有时候仅 需要返回第一行或者前几行,这时候就需要用到 LIMIT 子句.

语法

bash 复制代码
SELECT column1, column2, ... FROM table_name LIMIT [offset,] number

LIMIT 的第一个参数是位置偏移量(可选参数),是设置 MySQL 从哪一行开始显示。 如果不设定第一个参数,将会从表中的第一条记录开始显示。需要注意的是,第一条记录的 位置偏移量是 0,第二条是 1,以此类推。第二个参数是设置返回记录行的最大数目。

2.函数

注意:函数名和括号之间不能有空格。

(1)数学函数

表1 数学函数

|--------------------|----------------------|
| 数学函数 | 作用 |
| abs(x) | 返回x的绝对值 |
| rand() | 返回0到1的随机数 |
| mod(x, y) | 返回x除以y以后的余数 |
| power(x, y) | 返回x的y次方 |
| round(x) | 返回离x最近的整数 |
| round(x, y) | 保留x的y位小数四舍五入后的值 |
| sqrt(x) | 返回x的平方根. |
| truncate(x, y) | 返回数字x截断为y位小数的值#不四舍五入 |
| ceil(x) | 返回大于或等于x的最小整数 |
| floor(x) | 返回小于或等于x的最大整数 |
| greatest(x1,x2...) | 返回集合中最大的值 |
| least(x1,2...) | 返回集合中最小的值 |

示例:

bash 复制代码
 SELECT abs(-1),rand(), mod(5,3) ,power(2,3);
 #返回:1, 0-1之间的随机数,2,8
 ​
 SELECT round(1.89),sqrt(2);
 #返回:2,1.414
 ​
 SELECT round(1.8937,3),truncate (1.235,2);
 #返回:1.894,1.23
 ​
 SELECT ceil(5.2) ,floor(2.1) ,least(1.89,3,6.1,2.1);
 #返回:6,2,1.89

(2)聚合函数

表2 数学函数

|---------|-----------------|
| 聚合函数 | 含义 |
| avg() | 返回指定列的平均值 |
| count() | 返回指定列中非NULL值的个数 |
| min() | 返回指定列的最小值 |
| max() | 返回指定列的最大值 |
| sum(x) | 返回指定列的所有之和 |

注意:

① count(列名):只包括列名那一列的行数,在统计结果的时候,会忽略列值为 NULL 的行。

② count(*) :包括了所有的列的行数,在统计结果的时候,不会忽略列值为 NULL。

示例1:

bash 复制代码
 select avg(sales) from store_info;   #求表中销售额字段的平均值
 ​
 select sum(sales) from store_info;   #求表中销售额字段所有值的和

示例2:

bash 复制代码
 select max(sales) from store_info;    #显示表中销售额字段的最大值
 ​
 select min(sales) from store_info;    #显示表中销售额字段的最小值

示例3:

bash 复制代码
 #统计表中store_name字段有多少个非空值
 select count(store_name) from store_info;
 ​
 #统计表中store_name字段有多少个不重复的非空值
 select count(distinct store_name) from store_info; 

示例4:比较 count(列名) 和 count(*)

① count(列名):会忽略null值的行。

② count(*) :会统计所有行。

bash 复制代码
 #先准备一个数据表city
 create table city(name char(20));
 insert into city values('beijing');
 insert into city values('nanjing');
 insert into city values('hangzhou');
 insert into city values();
 insert into city values();
 ​
 #统计name字段有多少个非空值,会忽略字段值为null的行
 select count(name) from city;
 ​
 #统计所有行,不会忽略字段值为null的行。全表扫描。
 select count(*) from city;

(3)字符串函数

表3 字符串函数

|----------------|-----------------------------------------|
| 字符串函数 | 作用 |
| trim() | 返回去除指定格式的值 |
| concat(x,y) | 将提供的参数x和y拼接成一个字符串 |
| substr(x,y) | 获取从字符串x中的第y个位置开始的字符串,跟substring()函数作用相同 |
| substr(x,y,z) | 获取从字符串x中的第y个位置开始长度为z的字符串 |
| length(x) | 返回字符串x的长度 |
| replace(x,y,Z) | 将字符串z替代字符串x中的字符串y |
| upper(x) | 将字符串x的所有字母变成大写字母 |
| lower(x) | 将字符串x的所有字母变成小写字母 |
| left(x,y) | 返回字符串x的前y个字符 |
| right(x,y) | 返回字符串x的后y个字符 |
| repeat(x,y) . | 将字符串x重复y次 |
| space(x) | 返回X个空格 |
| strcmp(x,y) | 比较x和y,返回的值可以为-1,0,1 |
| reverse(x) | 将字符串x反转 |

①拼接的两种方法

方法一:concat(x,y)

示例1:

bash 复制代码
 select concat('zhang','san');  #将字符串"zhang"和"san"拼接在一起
 ​
 select concat('zhang','san','san');   #将3个字符串拼接在一起
 ​
 select concat('zhang',' ','san');   #将字符串"zhang"、空格、"san"拼接在一起

示例2:

bash 复制代码
 #将location表中,region字段值和store_name字段值拼接在一起。
 select concat(region,store_name) from location;
 ​
 #将location表中,region字段值和store_name字段值拼接在一起,且中间加空格。
 select concat(region,' ',store_name) from location;

方法二:使用 || 符号(5.7之后的版本才支持)

如果sql_mode开启了PIPES_AS_CONCAT(可查看配置文件进行确认),"||"视为字符串的连接操作符而非"或"运算符,和字符串的拼接函数Concat相类似,这和Oracle数据库使用方法一样的。

bash 复制代码
 #将location表中,region字段值和store_name字段值拼接在一起。
 select Region || store_name from location;
 ​
 #将location表中,region字段值和store_name字段值拼接在一起,且中间加空格。
 select Region || ' ' || store_name from location;

②截取

substr(x,y)和 substr(x,y,z)

bash 复制代码
 #从商店名称的第3个字符开始截取直到最后一个字符。
 select substr(Store_Name,3) from location;
 ​
 #从商店名称的第2个字符开始截取长度为4的字符串。
 select substr(Store_Name,2,4) from location;
 ​
 #当商店名为"Xian"时,从商店名称的第3个字符开始截取直到最后一个字符。
 select substr(Store_Name,3) from location where Store_Name='Xian';
 ​
 #当商店名为"Shanghai"时,从商店名称的第2个字符开始截取长度为4的字符串。
 select substr(Store_Name,2,4) from location where Store_Name='Shanghai';

③去除格式 trim()

语法:

bash 复制代码
 SELECT TRIM ([ [位置] [要移除的字符串] FROM ] 字符串);
 ​
 #[位置]:值可以为 LEADING (起头), TRAILING (结尾), BOTH (起头及结尾)。 
 #[要移除的字符串]:从字串的起头、结尾,或起头及结尾移除的字符串。缺省时为空格。

示例:

bash 复制代码
 select trim(leading 'Sh' from 'Shanghai');    #移除"Shanghai"开头的"Ne"
 ​
 select trim(trailing 'i' from 'Shanghai');    #移除"Shanghai"结尾的"k"

④返回字符长度 length

bash 复制代码
 select store_name,length(store_name) from location;   #统计store_name字段值的字符长度

⑤替换 replace

bash 复制代码
 select replace(region,'st','stern') from location;   
 #将region字段值中的字符串"st"替换为字符串"stern"。

3.进阶查询

(1) GROUP BY(用于分组和汇总)

通过 SQL 查询出来的结果,还可以对其进行分组,使用 GROUP BY 语句来实现 ,GROUP BY 通常都是结合聚合函数一起使用的,常用的聚合函数包括:计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),GROUP BY 分组的时候可以按一个或多个字段对结果进行分组处理。

对GROUPBY后面的字段的查询结果进行汇总分组,通常是结合聚合函数一起使用的:

①"GROUP BY"有一个原则,凡是在"GROUP BY"后面出现的字段,必须在SELECT 后面出现;

②凡是在SELECT 后面出现的、且未在聚合函数中出现的字段,必须出现在"GROUP BY"后面。

语法:

bash 复制代码
 SELECT 字段1,SUM(字段2) FROM 表名 GROUP BY 字段1;

示例:

bash 复制代码
  select store_name from store_info group by store_name;
 #对store_name字段值进行分组汇总。
 ​
 select store_name,count(store_name) from store_info group by store_name;
 #对store_name字段值进行分组汇总,并统计组内每个非空值的数量。
 ​
 select store_name,sum(sales) from store_info group by store_name;
 #对store_name字段值进行分组汇总,并计算每组的销售额。即分组后求和。
 ​
 select store_name,sum(sales) from store_info group by store_name order by sum(sales) desc;
 #对store_name字段值进行分组汇总,并计算每组的销售额,之后对组销售额降序排序。

(2)HAVING(和 group by配合使用)

①用来过滤由"GROUP BY"语句返回的记录集,通常与"GROUP BY"语句联合使用。

②HAVING语句的存在弥补了WHERE 关键字不能与聚合函数联合使用的不足。

③where只能对原表中的字段进行筛选,不能对group by后的结果进行筛选。

语法:

bash 复制代码
  SELECT 字段1,SUM(字段2) FROM "表格名" GROUP BY 字段1 HAVING(函数条件) ;

示例:

bash 复制代码
  select store_name,sum(sales) from store_info group by store_name having sum(sales)>1500;
 #对store_name字段值进行分组汇总,计算每组的销售额,之后显示组销售额大于1500的记录。

(3)别名(字段别名、表別名)

字段别名:

bash 复制代码
 SELECT 字段1,字段2 AS 字段2的别名 from 表名;   #AS可以省略不写
 ​
 示例:
 select store_name,sum(sales) as total_sales from store_info group by store_name having sum(sales) > 1000;
 #设置sum(sales)字段的别名为total_sales。
 #对store_name字段进行分组汇总,并计算组内销售额之和,之后查询出组销售额大于1000的记录。

表别名:

bash 复制代码
 SELECT 表格别名.字段1 [AS] 字段别名  FROM 表格名 [AS] 表格别名; #AS可以省略不写
 ​
 示例:
 select A.store_name store, sum(A.sales) total_sales from store_info A group by A.store_Name;
 #设置store_info表的别名为A,A.store_name字段的别名为store,sum(A.sales)字段的别名为total_sales。
 #对A表的store_Name字段进行分组汇总,并计算组销售额。即分组后求组内之和。

(4)表的自我连接

例如:对销售额字段进行排名,并显示名次。

bash 复制代码
 #count统计的是A表中销售额的每个值小于等于B表中每个值的次数。(A和B都是store_info的别名,即表的自我连接,自己跟自己对比。)
 select A.store_name,A.sales,count(A.sales) rank from store_info as A,store_info as B where A.sales <= B.sales group by A.store_name,A.sales order by rank asc;

如果表中有相同数值的销售额,使用如下语句:

bash 复制代码
 select A.store_name,A.sales,count(A.sales) rank from store_info as A,store_info as B where A.sales<B.sales or (A.sales=B.sales and A.store_name=B.store_name) group by A.store_name,A.sales order by rank asc;

(5)子查询

子查询:连接表格,在WHERE 子句或HAVING 子句中插入另一个SQL语句。

语法:

bash 复制代码
  SELECT "字段1" FROM "表格1" WHERE "字段2" [比较运算符]     #外查询
 (SELECT "字段1" FROM "表格2" WHERE "条件") ;             #内查询
 ​
 #可以是符号的运算符,例如=、>、<、>=、<= ;也可以是文字的运算符,例如LIKE、 IN、BETWEEN
 ​
 #先执行内查询,再执行外查询。内查询的查询结果,作为外查询的条件

示例1:两张表连接在一起

bash 复制代码
 select * from store_info A, location B where A.store_name=B.store_name;

示例2:

bash 复制代码
 select sales from store_info where store_name in           #外查询
 (select store_name from location where region = 'West');   #内查询。查询西部区域的商店名
 ​
 #内查询先查询出西部区域的商店名,之后外查询遍历这个商店名列表,查询出每个商店名对应的销售额。

示例3:

bash 复制代码
 select sum(sales) from store_info where store_name in      #外查询
 (select store_name from location where region = 'West');   #内查询。查询西部区域的商店名
 ​
 #内查询先查询出西部区域的商店名,之后外查询遍历这个商店名列表,求出列表中所有商店的销售额之和。

示例4:

bash 复制代码
  select sum(sales) from store_info A where A.store_name in
 (select store_name from location B where B.store_name=A.store_name);
 ​
 #内查询先查询出B表中和A表相同的商店名,之后外查询遍历这个商店名列表,求出列表中所有商店的销售额之和。

(6)EXISTS

① 用来测试内查询有没有产生任何结果,类似布尔值是否为真。

② 如果内查询有结果的话,系统就会执行外查询中的SQL语句。若是没有结果的话,那整个SQL语句就不会产生任何结果。

语法:

bash 复制代码
  SELECT "字段1" FROM "表格1" WHERE EXISTS (SELECT * FROM "表格2" WHERE "条件");

示例:

bash 复制代码
 #内查询有结果的话,系统就会执行外查询中的SQL语句
 select sum(sales) from store_info where exists (select * from location where region = 'west');
 ​
 #内查询没有产生结果,会返回NULL值
 select sum(sales) from store_info where exists (select * from location where region = 'north');

二、实验

1.普通查询

先准备2个表

一个location表:

bash 复制代码
 use market;
 create table location(Region char(20),Store_Name char(20));
 insert into location values('East','Hangzhou');
 insert into location values('East','Shanghai');
 insert into location values('West','Xian');
 insert into location values('West','Chengdu');

一个store_info表:

bash 复制代码
 create table store_info (Store_Name char (20),Sales int (10) ,Date char(10));
 insert into store_info values('Xian', '1500', '2023-07-15') ;
 insert into store_info values ('Chengdu', '250', '2023-07-17') ;
 insert into store_info values('Xian', '300', '2023-07-18') ;
 insert into store_info values('Shanghai', '700', '2023-07-18') ;

(1)slelct

(2)distinct

对商店名称进行去重,对日期字段进行去重

(3)where

查找销售额大于1000的数据记录,查找销售额大于1000的商店名称

(4)and 和 or

查询销售额大于500且小于1000的数据记录;查询销售额大于200且小于500的记录,或者销售额大于1000的记录;查询销售额大于200且小于500的商店名,或者销售额大于1000的商店名。

(5)in

查询商店名为"Xian",以及商店名为"Chengdu"的记录。

查询商店名称不是"Xian"、不是"Chengdu"的记录。

(6)between

查询销售额在500~1500之间的数据记录(包含500和1500)

查询店铺开业日期在2023-07-16到2023-07-20之间的记录(包含这两个日期)

(7)通配符

查询名字是s开头的记录

查询名字里是X和an中间有一个字符的记录

查询名字中间有h的记录

查询Shang后面3个字符的名字记录

通配符"%"和"_"不仅可以单独使用,也可以组合使用

查询名字以s开头的记录

(8) like

查询商店名称包含字符串"ng"的记录;查询商店名称以字符串"ia"结尾的记录;查询商店名称的第二、第三个字符为"ha"的记录

(9)order by

查看store_info表中的所有记录,按销售额进行升序排列;

查看store_info表中的所有记录,按销售额进行倒序排列;获取销售额最大的那行数据记录。

先按销售额进行倒序排列,之后取第一行记录。

先按销售额进行升序排列,之后取最后2行记录。

2.函数

(1)数学函数

返回:1, 0-1之间的随机数,2,8

返回:2,1.414

返回:1.894,1.23

返回:6,2,1.89

(2)聚合函数

示例1:

求表中销售额字段的平均值;求表中销售额字段所有值的和

示例2:

显示表中销售额字段的最大值,显示表中销售额字段的最小值

示例3:

统计表中store_name字段有多少个非空值;统计表中store_name字段有多少个不重复的非空值

示例4:比较 count(列名) 和 count(*)

bash 复制代码
 #先准备一个数据表city
 create table city(name char(20));
 insert into city values('beijing');
 insert into city values('nanjing');
 insert into city values('hangzhou');
 insert into city values();
 insert into city values();
 ​
 #统计name字段有多少个非空值,会忽略字段值为null的行
 select count(name) from city;
 ​
 #统计所有行,不会忽略字段值为null的行。全表扫描。
 select count(*) from city;

(3)字符串函数

①拼接的两种方法

方法一:concat(x,y)

示例1:

示例2:

方法二:使用 || 符号(5.7之后的版本才支持)

②截取

substr(x,y)和 substr(x,y,z)

③去除格式 trim()

④返回字符长度 length

⑤替换 replace

3.进阶查询

(1) GROUP BY(用于分组和汇总)

(2)HAVING(和 group by配合使用)

(3)别名(字段别名、表別名)

(4)表的自我连接

如果表中有相同数值的销售额,使用如下语句:

(5)子查询

示例1:两张表连接在一起

示例2:

示例3:

示例4:

(6)EXISTS

内查询有结果的话,系统就会执行外查询中的SQL语句

内查询没有产生结果,会返回NULL值

三、问题

1.MySQL || 运算符不生效

(1)问题

(2)原因分析

PIPES_AS_CONCAT SQL模式对于||运算符优先级的影响。在该模式下,||运算符的优先级与加法运算符相同,同时具有从左到右的结合性。因此,在使用||运算符时,应该根据实际需求选择正确的SQL模式,以确保运算结果的正确性。

(3)解决方法

PIPES_AS_CONCAT是MySQL的一种SQL模式,它将||运算符解释为字符串连接运算符,并在一定程度上改变了||的优先级。使用SET语句可以打开或关闭该模式:

bash 复制代码
SET sql_mode = 'PIPES_AS_CONCAT';

打开该模式后,||的优先级与加法运算符相同,且||+运算符具有相同的结合性。

四、总结

按关键字排序类比于windows 任务管理器,使用 SELECT 语句可以将需要的数据从 MySQL 数据库中查询出来,如果对查询的结果进行排序,可以使用 ORDER BY 语句来对语句实现排序,并最终将排序后的结果返回给用户。

对结果进行分组,通过 SQL 查询出来的结果,还可以对其进行分组,使用 GROUP BY 语句来实现 ,GROUP BY 通常都是结合聚合函数一起使用的,常用的聚合函数包括:计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),GROUP BY 分组的时候可以按一个或多个字段对结果进行分组处理。

通常通配符都是跟 LIKE 一起使用的,并协同 WHERE 子句共同来完成查询任务。常用的通配符有两个,分别是:

%:百分号表示零个、一个或多个字符 *

_:下划线表示单个字符 .

相关推荐
nongcunqq5 分钟前
abap 操作 excel
java·数据库·excel
rain bye bye38 分钟前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
冻咸鱼1 小时前
MySQL的配置
mysql·配置
阿里云大数据AI技术2 小时前
云栖实录|MaxCompute全新升级:AI时代的原生数据仓库
大数据·数据库·云原生
不剪发的Tony老师2 小时前
Valentina Studio:一款跨平台的数据库管理工具
数据库·sql
weixin_307779133 小时前
在 Microsoft Azure 上部署 ClickHouse 数据仓库:托管服务与自行部署的全面指南
开发语言·数据库·数据仓库·云计算·azure
六元七角八分3 小时前
pom.xml
xml·数据库
虚行3 小时前
Mysql 数据同步中间件 对比
数据库·mysql·中间件
奥尔特星云大使3 小时前
mysql读写分离中间件Atlas安装部署及使用
数据库·mysql·中间件·读写分离·atlas
牛马baby4 小时前
【mysql】in 用到索引了吗?
数据库·mysql·in