【MySQL初阶】表的增删查改(create、retrieve、update、delete)

【MySQL初阶】表的增删查改(create、retrieve、update、delete)

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;

本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~

相关探索