Create插入首先创建一张学生表:
代码语言:javascript代码运行次数:0运行复制mysql> create table students(
-> id int unsigned primary key auto_increment,
-> sn int not null unique,
-> name varchar(20) not null,
-> qq varchar(20) unique
-> );全列插入代码语言:javascript代码运行次数:0运行复制insert into students values (10, 111, '公孙离', 12345);指定列插入(into 可省略)代码语言:javascript代码运行次数:0运行复制insert students (sn, name, qq) values (222, '孙策', 23456);多行插入代码语言:javascript代码运行次数:0运行复制insert students values (20, 333, '貂蝉', 34567), (30, 444, '吕布', 45678);代码语言:javascript代码运行次数:0运行复制mysql> select * from students;
+----+-----+-----------+-------+
| id | sn | name | qq |
+----+-----+-----------+-------+
| 10 | 111 | 公孙离 | 12345 |
| 11 | 222 | 孙策 | 23456 |
| 20 | 333 | 貂蝉 | 34567 |
| 30 | 444 | 吕布 | 45678 |
+----+-----+-----------+-------+
4 rows in set (0.00 sec)插入否则更新 由于主键或者唯一键对应的值已经存在而导致插入失败。
代码语言:javascript代码运行次数:0运行复制--主键冲突
mysql> insert students values (30, 555, '狄仁杰', 56789);
ERROR 1062 (23000): Duplicate entry '30' for key 'students.PRIMARY'
--唯一键冲突
mysql> insert students values (31, 444, '狄仁杰', 56789);
ERROR 1062 (23000): Duplicate entry '444' for key 'students.sn'可以选择性的进行同步更新操作语法:
代码语言:javascript代码运行次数:0运行复制insert ... on duplicate key update
column = value [, column = value] ... 代码语言:javascript代码运行次数:0运行复制mysql> insert students values (31, 444, '狄仁杰', 56789)
-> on duplicate key update id = 30, sn = 555, name = '狄仁杰', qq = 56789;
Query OK, 2 rows affected (0.00 sec)
mysql> insert students values (31, 444, '狄仁杰', 56789)
-> on duplicate key update id = 31, sn = 444, name = '狄仁杰', qq = 56789;
Query OK, 2 rows affected (0.02 sec)操作成功后的提示信息:
0 rows affected:表中有冲突数据,但冲突数据的值和 update 的值相等;1 rows affected:表中没有冲突数据,数据被插入;2 rows affected:表中有冲突数据,并且数据已经被更新;代码语言:javascript代码运行次数:0运行复制mysql> select * from students;
+----+-----+-----------+-------+
| id | sn | name | qq |
+----+-----+-----------+-------+
| 10 | 111 | 公孙离 | 12345 |
| 11 | 222 | 孙策 | 23456 |
| 20 | 333 | 貂蝉 | 34567 |
| 31 | 444 | 狄仁杰 | 56789 |
+----+-----+-----------+-------+
4 rows in set (0.00 sec)替换主键 或者 唯一键 没有冲突,则直接插入;主键 或者 唯一键 如果冲突,则删除后再插入;代码语言:javascript代码运行次数:0运行复制mysql> replace students (id, sn, name) values (32, 555, '百里守约');
Query OK, 1 row affected (0.01 sec)
mysql> replace into students values (11, 666, '后羿', 67890);
Query OK, 2 rows affected (0.02 sec)1 row affected: 表中没有冲突数据,数据被插入2 row affected: 表中有冲突数据,删除后重新插入代码语言:javascript代码运行次数:0运行复制mysql> select * from students;
+----+-----+--------------+-------+
| id | sn | name | qq |
+----+-----+--------------+-------+
| 10 | 111 | 公孙离 | 12345 |
| 11 | 666 | 后羿 | 67890 |
| 20 | 333 | 貂蝉 | 34567 |
| 31 | 444 | 狄仁杰 | 56789 |
| 32 | 555 | 百里守约 | NULL |
+----+-----+--------------+-------+
5 rows in set (0.00 sec)Retrieve创建测试表:
代码语言:javascript代码运行次数:0运行复制mysql> create table exam_result (
-> id int unsigned primary key auto_increment,
-> name varchar(20) not NULL comment '同学姓名',
-> chinese float default 0.0 comment '语文成绩',
-> math float default 0.0 comment '数学成绩',
-> english float default 0.0 comment '英语成绩'
-> );代码语言:javascript代码运行次数:0运行复制mysql> desc exam_result;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| chinese | float | YES | | 0 | |
| math | float | YES | | 0 | |
| english | float | YES | | 0 | |
+---------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)插入测试数据:
代码语言:javascript代码运行次数:0运行复制mysql> insert exam_result (name, chinese, math, english) values
-> ('唐三藏', 67, 98, 56),
-> ('孙悟空', 87, 78, 77),
-> ('猪悟能', 88, 98, 90),
-> ('曹孟德', 82, 84, 67),
-> ('刘玄德', 55, 85, 45),
-> ('孙权', 70, 73, 78),
-> ('宋公明', 75, 65, 30);select列全列查询代码语言:javascript代码运行次数:0运行复制mysql> select * from exam_result;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 唐三藏 | 67 | 98 | 56 |
| 2 | 孙悟空 | 87 | 78 | 77 |
| 3 | 猪悟能 | 88 | 98 | 90 |
| 4 | 曹孟德 | 82 | 84 | 67 |
| 5 | 刘玄德 | 55 | 85 | 45 |
| 6 | 孙权 | 70 | 73 | 78 |
| 7 | 宋公明 | 75 | 65 | 30 |
+----+-----------+---------+------+---------+
7 rows in set (0.00 sec)指定列查询代码语言:javascript代码运行次数:0运行复制mysql> select name, math from exam_result;
+-----------+------+
| name | math |
+-----------+------+
| 唐三藏 | 98 |
| 孙悟空 | 78 |
| 猪悟能 | 98 |
| 曹孟德 | 84 |
| 刘玄德 | 85 |
| 孙权 | 73 |
| 宋公明 | 65 |
+-----------+------+
7 rows in set (0.00 sec)查询字段为表达式代码语言:javascript代码运行次数:0运行复制mysql> select id, name, english + 10 from exam_result;
+----+-----------+--------------+
| id | name | english + 10 |
+----+-----------+--------------+
| 1 | 唐三藏 | 66 |
| 2 | 孙悟空 | 87 |
| 3 | 猪悟能 | 100 |
| 4 | 曹孟德 | 77 |
| 5 | 刘玄德 | 55 |
| 6 | 孙权 | 88 |
| 7 | 宋公明 | 40 |
+----+-----------+--------------+
7 rows in set (0.07 sec)为查询结果指定别名(as可省略)代码语言:javascript代码运行次数:0运行复制mysql> select id, name, chinese + math + english as 总分 from exam_result;
+----+-----------+--------+
| id | name | 总分 |
+----+-----------+--------+
| 1 | 唐三藏 | 221 |
| 2 | 孙悟空 | 242 |
| 3 | 猪悟能 | 276 |
| 4 | 曹孟德 | 233 |
| 5 | 刘玄德 | 185 |
| 6 | 孙权 | 221 |
| 7 | 宋公明 | 170 |
+----+-----------+--------+
7 rows in set (0.01 sec)结果去重代码语言:javascript代码运行次数:0运行复制mysql> select distinct chinese from exam_result;
+---------+
| chinese |
+---------+
| 67 |
| 87 |
| 88 |
| 82 |
| 70 |
| 75 |
+---------+
6 rows in set (0.00 sec)where条件比较运算符
说明
>, >=, <, <=
大于,大于等于,小于,小于等于
=
等于,null 不安全,例如 null = null 的结果是 null
<=>
等于,null 安全,例如 null <=> null 的结果是 true(1)
!=, <>
不等于
between a0 and a1
范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 true(1)
in (option, …)
如果是 option 中的任意一个,返回 true(1)
is null
是 null
is not null
不是 null
like
模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符
逻辑运算符
说明
AND
多个条件必须都为 true(1),结果才是 true(1)
OR
任意一个条件为 true(1), 结果为 true(1)
NOT
条件为 true(1),结果为 false(0)
英语不及格的同学及英语成绩 ( < 60 )代码语言:javascript代码运行次数:0运行复制mysql> select name, english from exam_result where english < 60;
+-----------+---------+
| name | english |
+-----------+---------+
| 唐三藏 | 56 |
| 刘玄德 | 45 |
| 宋公明 | 30 |
+-----------+---------+
3 rows in set (0.00 sec)语文成绩在 [80, 90] 分的同学及语文成绩代码语言:javascript代码运行次数:0运行复制mysql> select name, chinese from exam_result
-> where chinese between 80 and 90;
+-----------+---------+
| name | chinese |
+-----------+---------+
| 孙悟空 | 87 |
| 猪悟能 | 88 |
| 曹孟德 | 82 |
| 刘玄德 | 88 |
+-----------+---------+
4 rows in set (0.00 sec)数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩代码语言:javascript代码运行次数:0运行复制mysql> select name, math from exam_result where math in (58, 59, 98, 99);
+-----------+------+
| name | math |
+-----------+------+
| 唐三藏 | 98 |
| 猪悟能 | 98 |
+-----------+------+
2 rows in set (0.00 sec)姓孙的同学代码语言:javascript代码运行次数:0运行复制mysql> select name from exam_result where name like '孙%';
+-----------+
| name |
+-----------+
| 孙悟空 |
| 孙权 |
+-----------+
2 rows in set (0.00 sec)孙某同学代码语言:javascript代码运行次数:0运行复制mysql> select name from exam_result where name like '孙_';
+--------+
| name |
+--------+
| 孙权 |
+--------+
1 row in set (0.00 sec)语文成绩好于英语成绩的同学代码语言:javascript代码运行次数:0运行复制mysql> select name, chinese, english from exam_result
-> where chinese > english;
+-----------+---------+---------+
| name | chinese | english |
+-----------+---------+---------+
| 唐三藏 | 67 | 56 |
| 孙悟空 | 87 | 77 |
| 曹孟德 | 82 | 67 |
| 刘玄德 | 88 | 45 |
| 宋公明 | 75 | 30 |
+-----------+---------+---------+
5 rows in set (0.00 sec)总分在 200 分以下的同学代码语言:javascript代码运行次数:0运行复制mysql> select name, chinese + math + english 总分 from exam_result
-> where chinese + math + english < 200;
+-----------+--------+
| name | 总分 |
+-----------+--------+
| 宋公明 | 170 |
+-----------+--------+
1 row in set (0.00 sec)代码语言:javascript代码运行次数:0运行复制mysql> select name, chinese + math + english 总分 from exam_result
-> where 总分 < 200;
ERROR 1054 (42S22): Unknown column '总分' in 'where clause'这里明明给 chinese + math + english 取了别名,怎么在where条件中不能用呢?
这和 select 语句的执行顺序有关:
首先判断查询哪个表 —> 然后判断条件是什么 —> 最后判断查什么
语文成绩 > 80 并且不姓孙的同学代码语言:javascript代码运行次数:0运行复制mysql> select name, chinese from exam_result where
-> chinese > 80 and name not like '孙%';
+-----------+---------+
| name | chinese |
+-----------+---------+
| 猪悟能 | 88 |
| 曹孟德 | 82 |
| 刘玄德 | 88 |
+-----------+---------+
3 rows in set (0.00 sec)孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80代码语言:javascript代码运行次数:0运行复制mysql> select name, chinese, math, english, chinese + math + english 总分
-> from exam_result where name like '孙_' or chinese + math + english > 200
-> and chinese < math and english > 80;
+-----------+---------+------+---------+--------+
| name | chinese | math | english | 总分 |
+-----------+---------+------+---------+--------+
| 猪悟能 | 88 | 98 | 90 | 276 |
| 孙权 | 70 | 73 | 78 | 221 |
+-----------+---------+------+---------+--------+
2 rows in set (0.00 sec)结果排序代码语言:javascript代码运行次数:0运行复制select ... from table_name [where ...] order by ...asc 为升序desc 为降序默认为 asc 没有 order by 子句的查询,返回的顺序是未定义的。
同学及数学成绩,按数学成绩升序显示代码语言:javascript代码运行次数:0运行复制mysql> select name, math from exam_result order by math;
+-----------+------+
| name | math |
+-----------+------+
| 宋公明 | 65 |
| 孙权 | 73 |
| 孙悟空 | 78 |
| 曹孟德 | 84 |
| 刘玄德 | 85 |
| 唐三藏 | 98 |
| 猪悟能 | 98 |
+-----------+------+
7 rows in set (0.00 sec)查询同学及总分,由高到低代码语言:javascript代码运行次数:0运行复制mysql> select name, chinese + english + math 总分
->from exam_result order by 总分 desc;
+-----------+--------+
| name | 总分 |
+-----------+--------+
| 猪悟能 | 276 |
| 孙悟空 | 242 |
| 曹孟德 | 233 |
| 唐三藏 | 221 |
| 孙权 | 221 |
| 刘玄德 | 218 |
| 宋公明 | 170 |
+-----------+--------+
7 rows in set (0.00 sec)和where条件不同的是,order by 后面可以用别名,这还是和select语句的执行顺序有关,这里是先要有合适的数据,然后才能排序。
查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示代码语言:javascript代码运行次数:0运行复制mysql> select name, math from exam_result where name like '孙%'
-> or name like '曹%' order by math desc;
+-----------+------+
| name | math |
+-----------+------+
| 曹孟德 | 84 |
| 孙悟空 | 78 |
| 孙权 | 73 |
+-----------+------+
3 rows in set (0.00 sec)筛选分页结果从 0 开始,筛选 n 条结果
select ... from table_name [where ...] [order by ...] limit n;从 s 开始,筛选 n 条结果
select ... from table_name [where ...] [order by ...] limit s, n;从 s 开始,筛选 n 条结果,比第二种用法更明确
select ... from table_name [where ...] [order by ...] limit n offset s; 对未知表进行查询时,最好加一条 limit 1,避免因为表中数据过大,查询全表数据导致数据库卡死。
按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页代码语言:javascript代码运行次数:0运行复制-- 第一页
mysql> select id, name, chinese, math, english from exam_result
-> order by id limit 3 offset 0;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 唐三藏 | 67 | 98 | 56 |
| 2 | 孙悟空 | 87 | 78 | 77 |
| 3 | 猪悟能 | 88 | 98 | 90 |
+----+-----------+---------+------+---------+
3 rows in set (0.00 sec)代码语言:javascript代码运行次数:0运行复制-- 第二页
mysql> select id, name, chinese, math, english from exam_result
-> order by id limit 3 offset 3;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 4 | 曹孟德 | 82 | 84 | 67 |
| 5 | 刘玄德 | 88 | 85 | 45 |
| 6 | 孙权 | 70 | 73 | 78 |
+----+-----------+---------+------+---------+
3 rows in set (0.00 sec)代码语言:javascript代码运行次数:0运行复制-- 第三页
mysql> select id, name, chinese, math, english from exam_result
-> order by id limit 3 offset 6;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 7 | 宋公明 | 75 | 65 | 30 |
+----+-----------+---------+------+---------+
1 row in set (0.00 sec)如果数据量不足不会有影响。
Update 对查询到的结果进行列值更新。
将孙悟空同学的数学成绩变更为 80 分代码语言:javascript代码运行次数:0运行复制mysql> update exam_result set math = 80 where name = '孙悟空';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select name, math from exam_result where name = '孙悟空';
+-----------+------+
| name | math |
+-----------+------+
| 孙悟空 | 80 |
+-----------+------+
1 row in set (0.00 sec)将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分代码语言:javascript代码运行次数:0运行复制mysql> update exam_result set math = 60, chinese = 70 where name = '曹孟德';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select name, math, chinese from exam_result where name = '曹孟德';
+-----------+------+---------+
| name | math | chinese |
+-----------+------+---------+
| 曹孟德 | 60 | 70 |
+-----------+------+---------+
1 row in set (0.00 sec)将总成绩倒数前三的 3 位同学的数学成绩加上 30 分 MySQL不支持 += 操作。
代码语言:javascript代码运行次数:0运行复制mysql> update exam_result set math = math + 30
-> order by chinese + math + english limit 3;
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> select name, math, chinese + math + english 总分 from exam_result
-> order by 总分;
+-----------+------+--------+
| name | math | 总分 |
+-----------+------+--------+
| 曹孟德 | 90 | 227 |
| 宋公明 | 125 | 230 |
| 孙悟空 | 80 | 244 |
| 刘玄德 | 115 | 248 |
| 唐三藏 | 128 | 251 |
| 孙权 | 103 | 251 |
| 猪悟能 | 98 | 276 |
+-----------+------+--------+
7 rows in set (0.00 sec)将所有同学的语文成绩更新为原来的 2 倍(更新全表的操作一定要慎用!)代码语言:javascript代码运行次数:0运行复制mysql> update exam_result set chinese = chinese * 2;
Query OK, 7 rows affected (0.04 sec)
Rows matched: 7 Changed: 7 Warnings: 0
mysql> select name, chinese from exam_result;
+-----------+---------+
| name | chinese |
+-----------+---------+
| 唐三藏 | 134 |
| 孙悟空 | 174 |
| 猪悟能 | 176 |
| 曹孟德 | 140 |
| 刘玄德 | 176 |
| 孙权 | 140 |
| 宋公明 | 150 |
+-----------+---------+
7 rows in set (0.00 sec)Delete删除数据delete from table_name [where ...] [order by ...] [limit ...];
删除孙悟空同学的考试成绩代码语言:javascript代码运行次数:0运行复制mysql> delete from exam_result where name = '孙悟空';
Query OK, 1 row affected (0.00 sec)
mysql> select * from exam_result where name = '孙悟空';
Empty set (0.00 sec)删除整张表数据代码语言:javascript代码运行次数:0运行复制mysql> select * from for_delete;
+----+------+
| id | name |
+----+------+
| 1 | A |
| 2 | B |
| 3 | C |
+----+------+
3 rows in set (0.00 sec)
mysql> delete from for_delete;
Query OK, 3 rows affected (0.04 sec)
mysql> insert for_delete (name) values ('D');
Query OK, 1 row affected (0.02 sec)
mysql> select * from for_delete;
+----+------+
| id | name |
+----+------+
| 4 | D |
+----+------+
1 row in set (0.00 sec)截断表truncate [table] table_name;
只能对整表操作,不能像 delete 一样针对部分数据操作;实际上 truncate 不对数据操作,所以比 delete 更快,但是 truncate 在删除数据的时候,并不经过真正的事物,所以无法回滚;会重置 AUTO_INCREMENT 项;代码语言:javascript代码运行次数:0运行复制mysql> select * from for_truncate;
+----+------+
| id | name |
+----+------+
| 1 | A |
| 2 | B |
| 3 | C |
+----+------+
3 rows in set (0.00 sec)
mysql> truncate for_truncate;
Query OK, 0 rows affected (0.22 sec)
mysql> insert for_truncate (name) values ('D');
Query OK, 1 row affected (0.03 sec)
mysql> select * from for_truncate;
+----+------+
| id | name |
+----+------+
| 1 | D |
+----+------+
1 row in set (0.02 sec)插入查询结果 现在有个要求,删除表中的重复数据。
比如下面的测试表:
代码语言:javascript代码运行次数:0运行复制mysql> select * from duplicate_table;
+------+------+
| id | name |
+------+------+
| 100 | aaa |
| 100 | aaa |
| 200 | bbb |
| 200 | bbb |
| 200 | bbb |
| 300 | ccc |
+------+------+
6 rows in set (0.00 sec)思路:
创建一张空表 no_duplicate_table,结构和 duplicate_table 一样;代码语言:javascript代码运行次数:0运行复制mysql> create table no_duplicate_table like duplicate_table;
Query OK, 0 rows affected (0.11 sec)将 duplicate_table 的去重数据插入到 no_duplicate_table;代码语言:javascript代码运行次数:0运行复制mysql> insert no_duplicate_table select distinct * from duplicate_table;
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0通过重命名表,实现原子的去重操作;代码语言:javascript代码运行次数:0运行复制mysql> rename table duplicate_table to old_duplicate_table,
-> no_duplicate_table to duplicate_table;
Query OK, 0 rows affected (0.15 sec)代码语言:javascript代码运行次数:0运行复制mysql> select * from duplicate_table;
+------+------+
| id | name |
+------+------+
| 100 | aaa |
| 200 | bbb |
| 300 | ccc |
+------+------+
3 rows in set (0.02 sec)为什么要这样做呢?
直接对目标表做去重、写入操作,这个过程不是原子的,因此我们通常会先将去重后的数据写入到一个临时表中,然后通过rename/mv操作对临时文件重命名,变成我们想要的目标文件,原先文件作废。这么做的原因是 rename/mv 操作是原子的。
聚合函数函数
功能
COUNT()
统计符合条件的记录行数
SUM()
计算某列数值的总和(仅适用于数值型列)
AVG()
计算某列数值的平均值(仅适用于数值型列)
MAX()
返回某列的最大值(支持数值、字符串、日期时间类型)
MIN()
返回某列的最小值(支持数值、字符串、日期时间类型)
统计班级共有多少同学代码语言:javascript代码运行次数:0运行复制mysql> select * from students;
+----+-----+--------------+-------+
| id | sn | name | qq |
+----+-----+--------------+-------+
| 10 | 111 | 公孙离 | 12345 |
| 11 | 666 | 后羿 | 67890 |
| 20 | 333 | 貂蝉 | 34567 |
| 31 | 444 | 狄仁杰 | 56789 |
| 32 | 555 | 百里守约 | NULL |
+----+-----+--------------+-------+
5 rows in set (0.00 sec)
mysql> select count(*) from students;
+----------+
| count(*) |
+----------+
| 5 |
+----------+
1 row in set (0.03 sec)统计数学成绩去重后的数量代码语言:javascript代码运行次数:0运行复制mysql> select count(distinct math) from exam_result;
+----------------------+
| count(distinct math) |
+----------------------+
| 6 |
+----------------------+
1 row in set (0.00 sec)统计所有同学语文成绩总分代码语言:javascript代码运行次数:0运行复制mysql> select sum(chinese) from exam_result;
+--------------+
| sum(chinese) |
+--------------+
| 916 |
+--------------+
1 row in set (0.00 sec)统计所有同学总分的平均分代码语言:javascript代码运行次数:0运行复制mysql> select avg(chinese + math + english) from exam_result;
+-------------------------------+
| avg(chinese + math + english) |
+-------------------------------+
| 323.5 |
+-------------------------------+
1 row in set (0.00 sec)找出英语最高分代码语言:javascript代码运行次数:0运行复制mysql> select max(english) from exam_result;
+--------------+
| max(english) |
+--------------+
| 90 |
+--------------+
1 row in set (0.01 sec)找出数学成绩 > 80 的最低分代码语言:javascript代码运行次数:0运行复制mysql> select min(math) from exam_result where math > 80;
+-----------+
| min(math) |
+-----------+
| 90 |
+-----------+
1 row in set (0.00 sec)group by在select中使用group by 子句可以对指定列进行分组查询。
select col1, col2, ... from table_name group by col;
本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~