阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL-Select语句高级应用

113次阅读
没有评论

共计 13840 个字符,预计需要花费 35 分钟才能阅读完成。

1.1 SELECT 高级应用

1.1.1 前期准备工作

本次测试使用的是 world 数据库,由 MySQL 官方提供下载地址

https://dev.mysql.com/doc/index-other.html

world 文件导入方法,官方说明:

https://dev.mysql.com/doc/world-setup/en/world-setup-installation.html

  下载 sqlyog 软件,用于之后的数据库管理用

http://www.webyog.com

创建用户 ,能够让 sqlyog 登录数据库即可,注意权限控制。

mysql> grant all on *.* to root@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)

  授权用户后参看

mysql> select user,host from mysql.user where user like 'root';
+------+-----------+
| user | host      |
+------+-----------+
| root | %         |
| root | 10.0.0.1  |
| root | 127.0.0.1 |
| root | localhost |
+------+-----------+
4 rows in set (0.00 sec)
 

1.1.2 select 语法格式说明

 
mysql> help select;
Name: 'SELECT'
Description:
Syntax:
SELECT
    [ALL | DISTINCT | DISTINCTROW]
      [HIGH_PRIORITY]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
      [PARTITION partition_list]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
      | INTO DUMPFILE 'file_name'
      | INTO var_name [, var_name]]
    [FOR UPDATE | LOCK IN SHARE MODE]]

1.2 select 中 where 子句使用

SELECT  *|{[DISTINCT]  column|select_expr [alias], ...]} 
[FROM [database.]table]
[WHERE conditions];

 where 条件的说明:

WHERE 条件又叫做过滤条件,它从 FROM 子句的中间结果中去掉所有条件 conditions 不为 TRUE(而为 FALSE 或者 NULL)的行。

WHERE 子句跟在 FROM 子句后面,不能在 WHERE 子句中使用列别名。

【示例一】where 字句的基本使用

SELECT * FROM world.`city` WHERE CountryCode='CHN';
or
SELECT * FROM world.`city` WHERE CountryCode='chn';

  sql 说明:从数据库中查找是中国的城市。

 

注意:

WHERE 中出现的字符串和日期字面量必须使用引号括起来

这里,字符串字面量写成大写或小写结果都一样,即不区分大小写进行查询。

这和 Oracle 不同,ORACLE 中 WHERE 条件中的字面量是区分大小写的

【示例二】where 字句中的逻辑操作符

SELECT * FROM world.`city` 
WHERE CountryCode='chn' AND district = 'shanxi';

      sql 说明:从数据库中查找是中国的并且是山西的城市

 

逻辑操作符介绍:

逻辑操作符

说明

and

逻辑与。只有当所有的子条件都为 true 时,and 才返回 true。否则返回 false 或 null

or

逻辑或。只要有一个子条件为 true,or 就返回 true。否则返回 false 或 null

not

逻辑非。如果子条件为 true,则返回 false;如果子条件为 false,则返回 true

xor

逻辑异或。当一个子条件为 true 而另一个子条件为 false 时,其结果为 true;

当两个条件都为 true 或都为 false 时,结果为 false。否则,结果为 null

【示例三】:where 字句中的范围比较

SELECT * FROM world.`city` 
WHERE 
population BETWEEN 100000 AND 200000 ;

      sql 说明:从数据库中查找人口数量在 100000-200000 之间的城市

 

【示例四】:where 字句中的 IN

SELECT * FROM city
WHERE countrycode IN ('CHN','JPN');

      sql 说明:查询中国和日本的所有城市

 

【示例五】:where 字句中的 like

USE world;
SELECT * FROM city
WHERE countrycode LIKE 'ch%';

      sql 说明:从 city 表中找到国家是一 ch 开头的。

 

like 的语法:

  like‘匹配模式字符串’

实现模式匹配查询或者模糊查询:测试一个列值是否匹配给出的模式

在‘匹配模式字符串’中,可以有两个具有特殊含义的通配字符:

%:表示 0 个或者任意多个字符
        _:只表示一个任意字符 

1.3 select 中 ORDER BY 子句

1.3.1 order by 子句的作用

ORDER BY 子句用来排序行

如果 SELECT 语句中没有 ORDER BY 子句,那么结果集中行的顺序是不可预料的

语法:

SELECT  expr
FROM  table
[WHERE condition(s)]
[ORDER  BY  {column, expr, numeric_position} [Asc|DEsc]];

部分参数说明: 

参数

参数说明

Asc

执行升序排序。默认值

DEsc

执行降序排序

使用方法

ORDER BY 子句一般在 SELECT 语句的最后面

1.3.2 order by 示例

【示例一】Order by 基本使用

SELECT * FROM city
ORDER BY population;

    sql 说明:将城市表按照人口数量升序排列

 

【示例二】多个排序条件

SELECT * FROM city
ORDER BY population,countrycode;

      sql 说明:按照人口和国家进行排序

 

【示例三】以 select 字句列编号排序

SELECT * FROM city
ORDER BY 5;

      sql 说明:按照第 5 列进行排序

 

【示例四】desc 实践

SELECT * FROM city
ORDER BY 5 DESC;

      sql 说明:按照第列进行逆序排列

 

说明:NULL 值的排序

在 MySQL 中,把 NULL 值当做一列值中的最小值对待。

因此,升序排序时,它出现在最前面。

1.4 LIMIT 子句

特点说明:

MySQL 特有的子句。

它是 SELECT 语句中的最后一个子句(在 order by 后面)。

它用来表示从结果集中选取最前面或最后面的几行。

偏移量 offset 的最小值为 0。

语法:

limit  < 获取的行数 > [OFFSET < 跳过的行数 >]
或者 
limit [< 跳过的行数 >,] < 获取的行数 >

查询示例

SELECT * FROM city
ORDER BY 5 DEsc
LIMIT 4;

      sql 说明:获取排序后的前 4 行

 

注:先按照人口数量进行降序排序,然后使用 limit 从中挑出最前面的 4 行。

如果没有 order by 子句,返回的 4 行就是不可预料的。

1.5 多表连接查询

1.5.1 传统的连接写法(使用 where)

SELECT NAME,ci.countrycode ,cl.language ,ci.population
FROM  city ci , countrylanguage cl
WHERE ci.`CountryCode`=cl.countrycode;

       sql 说明:city 定别名为 ci,国家定别名问为 cl,进行连表查询,NAME 是共同的键值,使用 where 条件进行连接。

 

注意:一旦给表定义了别名,那么原始的表名就不能在出现在该语句的其它子句中了

1.5.2 NATURAL  JOIN 子句

自动到两张表中查找所有同名同类型的列拿来做连接列,进行相等连接

SELECT NAME,countrycode ,LANGUAGE ,population
FROM  city NATURAL  JOIN  countrylanguage
WHERE population > 1000000
ORDER BY population;

      sql 说明:使用 natural join 进行相等连接,两个表,条件为人口大于 1000000 的,进行升序排列。

 

注意:在 select 子句只能出现一个连接列

1.5.3 使用 using 子句

SELECT NAME,countrycode ,LANGUAGE ,population
FROM  city JOIN  countrylanguage
USING(countrycode);

      sql 说明:使用 join 进行两表的来连接,using 指定 countrycode 为关联列。

 

1.5.4 集合操作

UNION [DISTINCT]
UNION ALL

 

语法:

SELECT ... 
UNION [ALL | DISTINCT] 
SELECT ... 
[UNION [ALL | DISTINCT] 
SELECT ...]

   ⛳ UNION 用于把两个或者多个 select 查询的结果集合并成一个

   ⛳ 进行合并的两个查询,其 SELECT 列表必须在数量和对应列的数据类型上保持一致

   ⛳ 默认会去掉两个查询结果集中的重复行

   ⛳ 默认结果集不排序

      ⛳ 最终结果集的列名来自于第一个查询的 SELECT 列表

1.5.5 分组操作及分组处理

“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

Having 与 Where 的区别

where 子句的作用是在对查询结果进行分组前,将不符合 where 条件的行去掉,即在分组之前过滤数据,where 条件中不能包含聚组函数,使用 where 条件过滤出特定的行。

having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用 having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

1.5.6【select 高级应用】数据库备份脚本拼接

SELECT CONCAT("mysqldump","-uroot","-p123",table_schema,"",table_name,">/tmp/",table_schema,"_",table_name,".sql") 
FROM information_schema.tables
WHERE table_schema='world'
INTO OUTFILE '/tmp/world_bak.sh'

       使用 concat 进行拼接数据备份脚本。

 

— 显示信息,可直接进行运算

SELECT CONCAT("132");SELECT CONCAT("132+123");SELECT CONCAT("132+123");

— 查看引擎是 innodb 的表

SELECT TABLE_NAME  FROM TABLES WHERE ENGINE='innodb';

SELECT CHARACTER_SET_NAME, COLLATION_NAME
FROM   INFORMATION_SCHEMA.COLLATIONS
WHERE  IS_DEFAULT = 'Yes';

 

— 显示每个库下有多少表

SELECT TABLE_SCHEMA ,COUNT(*)
FROM information_schema.`TABLES`
GROUP BY TABLE_SCHEMA;

 

1.5.7 子查询

子查询定义

在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询(subquery),我么也称作子选择(subselect)或内嵌选择(inner select)。子查询的结果传递给调用它的表表达式继续处理。

子查询(inner  query)先执行,然后执行主查询(outer  query)

子查询按对返回结果集的调用方法,可分为:where 型子查询,from 型子查询及 exists 型子查询。

使用子查询原则

一个子查询必须放在圆括号中。

将子查询放在比较条件的右边以增加可读性。

子查询不包含 ORDER BY 子句。对一个 SELECT 语句只能用一个 ORDER BY 子句,并且如果指定了它就必须放在主 SELECT 语句的最后。

在子查询中可以使用两种比较条件:单行运算符 (>, =, >=, <, <>, <=) 和多行运算符 (IN, ANY, ALL)。

不相关子查询

子查询中没有使用到外部查询的表中的任何列。先执行子查询,然后执行外部查询

相关子查询 (correlated subquery)

子查询中使用到了外部查询的表中的任何列。先执行外部查询,然后执行子查询

以上两种类型之下又可以分为:

  行子查询 (row subquery):返回的结果集是 1 行 N 列
  列子查询 (column subquery):返回的结果集是 N 行 1 列 
  表子查询 (table subquery):返回的结果集是 N 行 N 列 
  标量子查询 (scalar subquery):返回 1 行 1 列一个值 

子查询示例

  创建数据表

1 CREATE TABLE PLAYERS  
 2     (PLAYERNO      INTEGER      NOT NULL,  
 3     NAME           CHAR(15)     NOT NULL,  
 4     INITIALS       CHAR(3)      NOT NULL,  
 5     BIRTH_DATE     DATE                 ,  
 6     SEX            CHAR(1)      NOT NULL,  
 7     JOINED         SMALLINT     NOT NULL,  
 8     STREET         VARCHAR(30)  NOT NULL,  
 9     HOUSENO        CHAR(4)              ,  
10     POSTCODE       CHAR(6)              ,  
11     TOWN           VARCHAR(30)  NOT NULL,  
12     PHONENO        CHAR(13)             ,  
13     LEAGUENO       CHAR(4)              ,  
14     PRIMARY KEY    (PLAYERNO));  
15   
16 CREATE   TABLE PENALTIES  
17         (PAYMENTNO      INTEGER      NOT NULL,  
18          PLAYERNO       INTEGER      NOT NULL,  
19          PAYMENT_DATE   DATE         NOT NULL,  
20          AMOUNT         DECIMAL(7,2) NOT NULL,  
21          PRIMARY KEY    (PAYMENTNO)); 
22 
23 INSERT INTO PLAYERS VALUES (2, 'Everett', 'R', '1948-09-01', 'M', 1975, 'Stoney Road','43', '3575NH', 'Stratford', '070-237893', '2411');  
24 INSERT INTO PLAYERS VALUES (6, 'Parmenter', 'R', '1964-06-25', 'M', 1977, 'Haseltine Lane','80', '1234KK', 'Stratford', '070-476537', '8467');  
25 INSERT INTO PLAYERS VALUES (7, 'Wise', 'GWS', '1963-05-11', 'M', 1981, 'Edgecombe Way','39', '9758VB', 'Stratford', '070-347689', NULL);  
26 INSERT INTO PLAYERS VALUES (8, 'Newcastle', 'B', '1962-07-08', 'F', 1980, 'Station Road','4', '6584WO', 'Inglewood', '070-458458', '2983');  
27 INSERT INTO PLAYERS VALUES (27, 'Collins', 'DD', '1964-12-28', 'F', 1983, 'Long Drive','804', '8457DK', 'Eltham', '079-234857', '2513');  
28 INSERT INTO PLAYERS VALUES (28, 'Collins', 'C', '1963-06-22', 'F', 1983, 'Old Main Road','10', '1294QK', 'Midhurst', '010-659599', NULL);  
29 INSERT INTO PLAYERS VALUES (39, 'Bishop', 'D', '1956-10-29', 'M', 1980, 'Eaton Square','78', '9629CD', 'Stratford', '070-393435', NULL);  
30 INSERT INTO PLAYERS VALUES (44, 'Baker', 'E', '1963-01-09', 'M', 1980, 'Lewis Street','23', '4444LJ', 'Inglewood', '070-368753', '1124');  
31 INSERT INTO PLAYERS VALUES (57, 'Brown', 'M', '1971-08-17', 'M', 1985, 'Edgecombe Way','16', '4377CB', 'Stratford', '070-473458', '6409');  
32 INSERT INTO PLAYERS VALUES (83, 'Hope', 'PK', '1956-11-11', 'M', 1982, 'Magdalene Road','16A', '1812UP', 'Stratford', '070-353548', '1608');  
33 INSERT INTO PLAYERS VALUES (95, 'Miller', 'P', '1963-05-14', 'M', 1972, 'High Street','33A', '5746OP', 'Douglas', '070-867564', NULL);  
34 INSERT INTO PLAYERS VALUES (100, 'Parmenter', 'P', '1963-02-28', 'M', 1979, 'Haseltine Lane','80', '6494SG', 'Stratford', '070-494593', '6524');  
35 INSERT INTO PLAYERS VALUES (104, 'Moorman', 'D', '1970-05-10', 'F', 1984, 'Stout Street','65', '9437AO', 'Eltham', '079-987571', '7060');  
36 INSERT INTO PLAYERS VALUES (112, 'Bailey', 'IP', '1963-10-01', 'F', 1984, 'Vixen Road','8', '6392LK', 'Plymouth', '010-548745', '1319');  
37   
38 INSERT INTO PENALTIES VALUES (1,  6, '1980-12-08',100);
39 INSERT INTO PENALTIES VALUES (2, 44, '1981-05-05', 75);
40 INSERT INTO PENALTIES VALUES (3, 27, '1983-09-10',100);
41 INSERT INTO PENALTIES VALUES (4,104, '1984-12-08', 50);
42 INSERT INTO PENALTIES VALUES (5, 44, '1980-12-08', 25);
43 INSERT INTO PENALTIES VALUES (6,  8, '1980-12-08', 25);
44 INSERT INTO PENALTIES VALUES (7, 44, '1982-12-30', 30);
45 INSERT INTO PENALTIES VALUES (8, 27, '1984-11-12', 75);

创建数据库语句

例一、获取和 100 号球员性别相同并且居住在同一城市的球员号码。

select playerno   
from players   
where (sex, town) = (  
    select sex, town   
    from players   
    where playerno = 100);

    例二、获取和 27 号球员出生在同一年的球员的号码

 
select playerno   
from players   
where year(birth_date) =   
    (select year(birth_date)   
    from players   
    where playerno = 27)   
and playerno <> 27;
 

例三、获取那些至少支付了一次罚款的球员的名字和首字母。

select name, initials   
from players   
where exists   
    (select * from penalties   
    where playerno = players.playerno);

 例四、获取那些从来没有罚款的球员的名字和首字母。

select name, initials   
from players   
where not exists   
    (select * from penalties   
    where playerno = players.playerno);

1.6 Informatica_schema 获取元数据

1.6.1 元数据访问方法

查询 INFORMATION_SCHEMA 数据库表。其中包含 MySQL 数据库服务器所管理的所有对象的相关数据

使用 SHOW 语句。用于获取数据库和表信息的 MySQL 专用语句

使用 DESCRIBE(或 DESC)语句。用于检查表结构和列属性的快捷方式

使用 mysqlshow 客户端程序。SHOW 语法的命令行程序

INFORMATION_SCHEMA 数据库优点介绍

充当数据库元数据的中央系统信息库,模式和模式对象,服务器统计信息(状态变量、设置、连接)。

采用表格式以实现灵活访问,使用任意 SELECT 语句。是“虚拟数据库”,表并非“真实”表(基表),而是“系统视图”,根据当前用户的特权动态填充表。

列出 INFORMATION_SCHEMA 数据库中所有的表:

 
mysql>  USE information_schema;
Database changed
mysql>  SHOW TABLES;
+---------------------------------------+
| Tables_in_information_schema          |
+---------------------------------------+
| CHARACTER_SETS                        |
| COLLATIONS                            |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS                               |
| COLUMN_PRIVILEGES                     |
 

1.6.2 对 INFORMATION_SCHEMA 使用 SELECT

示例一:

查找引擎是 innodb 的表。

SELECT TABLE_NAME, ENGINE
FROM  INFORMATION_SCHEMA.TABLES
WHERE ENGINE= 'innodb';

示例二:

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
 FROM   INFORMATION_SCHEMA.COLUMNS
 WHERE  DATA_TYPE = 'set';

         sql 说明:查找数据类型是 set 的表 

示例三:

SELECT CHARACTER_SET_NAME, COLLATION_NAME,IS_DEFAULT
FROM   INFORMATION_SCHEMA.COLLATIONS
WHERE  IS_DEFAULT = 'Yes';

        sql 说明:查看找默认为 yes 的表 

示例四:

SELECT TABLE_SCHEMA, COUNT(*) 
 FROM   INFORMATION_SCHEMA.TABLES
 GROUP BY TABLE_SCHEMA;

        sql 说明:查看每个数据库下表的个数 

使用 INFORMATION_SCHEMA 表获取有关创建 shell 命令的信息。

SELECT CONCAT("mysqldump -uroot -p",
   TABLE_SCHEMA,"",  TABLE_NAME," >> ",
   TABLE_SCHEMA,".bak.sql")
 FROM TABLES WHERE TABLE_NAME LIKE 'Country%' 

1.6.3 使用 mysql 命令创建 SQL 语句。

mysql -uroot -p123 --silent --skip-column-names -e "SELECT CONCAT('CREATE TABLE ', TABLE_SCHEMA,'.',TABLE_NAME,'_backup LIKE ', TABLE_SCHEMA,'.',TABLE_NAME,';') 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'world_innodb';"

1.6.4 MySQL 中的 show 语句

SOHW databases:列出所有数据库
SHOW TABLES:列出默认数据库中的表
SHOW TABLES FROM <database_name>:列出指定数据库中的表
SHOW COLUMNS FROM <table_name>:显示表的列结构
SHOW INDEX FROM <table_name>:显示表中有关索引和索引列的信息
SHOW CHARACTER SET:显示可用的字符集及其默认整理
SHOW COLLATION:显示每个字符集的整理
SHOW STATUS:列出当前数据库状态
SHOW VARIABLES:列出数据库中的参数定义值 
 

1.6.5 DESCRIBE 语句

DESCRIBE 语句 等效于 SHOW COLUMNS

一般语法:

mysql> DESCRIBE <table_name>;

显示 INFORMATION_SCHEMA 表信息

 
mysql> DESCRIBE INFORMATION_SCHEMA.CHARACTER_SETS;
+----------------------+-------------+------+-----+---------+-------+
| Field                | Type        | Null | Key | Default | Extra |
+----------------------+-------------+------+-----+---------+-------+
| CHARACTER_SET_NAME   | varchar(32) | NO   |     |         |       |
| DEFAULT_COLLATE_NAME | varchar(32) | NO   |     |         |       |
| DESCRIPTION          | varchar(60) | NO   |     |         |       |
| MAXLEN               | bigint(3)   | NO   |     | 0       |       |
+----------------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
 

有关数据库和表的结构的信息与 SHOW 语句相似

一般语法:

shell> mysqlshow [options] [db_name [table_name[column_name]]]

显示所有数据库或特定数据库、表和 / 或列的相关信息:

 
[root@db02 ~]#  mysqlshow -uroot -p123
Warning: Using a password on the command line interface can be insecure.
+--------------------+
|     Databases      |
+--------------------+
| information_schema |
| clsn               |
| haha               |
| mysql              |
| oldboy             |
| performance_schema |
| world              |
+--------------------+
 

  查看数据库下的表

 
[root@db02 ~]#  mysqlshow -uroot -p123 world
Warning: Using a password on the command line interface can be insecure.
Database: world
+-----------------+
|     Tables      |
+-----------------+
| PENALTIES       |
| PLAYERS         |
| city            |
| country         |
| countrylanguage |
+-----------------+
 

查看数据库下表记录

 
[root@db02 ~]#  mysqlshow -uroot -p123 world city
Warning: Using a password on the command line interface can be insecure.
Database: world  Table: city
+-------------+----------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field       | Type     | Collation         | Null | Key | Default | Extra          | Privileges                      | Comment |
+-------------+----------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| ID          | int(11)  |                   | NO   | PRI |         | auto_increment | select,insert,update,references |         |
| Name        | char(35) | latin1_swedish_ci | NO   |     |         |                | select,insert,update,references |         |
| CountryCode | char(3)  | latin1_swedish_ci | NO   | MUL |         |                | select,insert,update,references |         |
| District    | char(20) | latin1_swedish_ci | NO   |     |         |                | select,insert,update,references |         |
| Population  | int(11)  |                   | NO   |     | 0       |                | select,insert,update,references |         |
+-------------+----------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
 

查看记录信息

 
[root@db02 ~]#  mysqlshow -uroot -p123 world city CountryCode
Warning: Using a password on the command line interface can be insecure.
Database: world  Table: city  Wildcard: CountryCode
+-------------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| Field       | Type    | Collation         | Null | Key | Default | Extra | Privileges                      | Comment |
+-------------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| CountryCode | char(3) | latin1_swedish_ci | NO   | MUL |         |       | select,insert,update,references |         |
+-------------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+
 

查看数据库类似 like。

[root@db02 ~]#  mysqlshow -uroot -p123 "w%"
Warning: Using a password on the command line interface can be insecure.
Wildcard: w%
+-----------+
| Databases |
+-----------+
| world     |
+-----------+

1.7 参考文献

https://dev.mysql.com/doc/refman/5.6/en/select.html         SELECT 语法官方说明 

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-12/149779.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计13840字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中