文章目录
- 一、LIMIT限制查询结果的数量
- 二、使用GROUP BY进行分组查询
- 1.GROUP BY和聚合函数一起使用
- 2.GROUP BY和聚合函数以及HAVING一起使用
- 三、使用ORDER BY对查询结果排序
一、LIMIT限制查询结果的数量
开始之前,我们先准备一下数据,打开cmd,输入:
mysql -u root -p
进行登录,登录后:
- 创建数据库:
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;
- 创建 student 表:
CREATE TABLE student (
id CHAR(6),
name VARCHAR(50),
age INT,
gender VARCHAR(50) DEFAULT 'male'
);
- 向 student 表插入数据:
INSERT INTO student (id,name,age,gender) VALUES ('01', 'lili', 14, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('02', 'wang', 15, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('03', 'tywd', 16, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('04', 'hfgs', 17, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('05', 'qwer', 18, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('06', 'zxsd', 19, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('07', 'hjop', 16, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('08', 'tyop', 15, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('09', 'nhmk', 13, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('10', 'xdfv', 17, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('12', 'lili', 14, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('13', 'wang', 15, 'female');
当执行查询数据时可能会返回很多条记录,而用户需要的数据可能只是其中的一条或者几条。
查询年纪最小的 3 位同学:
select * from student order by age asc limit 3;
查询编号前五的学生:
select * from student order by id asc limit 5;
二、使用GROUP BY进行分组查询
GROUP BY
子句可像切蛋糕一样将表中的数据进行分组,再进行查询等操作。换言之,可通俗地理解为:通过GROUP BY
将原来的表拆分成了几张小表。
接下来,我们通过一个新的例子开始学习GROUP BY
,代码如下
创建数据库:
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;
创建员工表:
CREATE TABLE employee (
id int,
name varchar(50),
salary int,
departmentnumber int
);
向员工表中插入数据:
INSERT INTO employee values(1,'tome',2000,01);
INSERT INTO employee values(2,'lucy',9000,02);
INSERT INTO employee values(3,'joke',5000,03);
INSERT INTO employee values(4,'wang',3000,04);
INSERT INTO employee values(5,'chen',3000,01);
INSERT INTO employee values(6,'yukt',7000,02);
INSERT INTO employee values(7,'rett',6000,03);
INSERT INTO employee values(8,'mujk',4000,04);
INSERT INTO employee values(9,'poik',3000,01);
1.GROUP BY和聚合函数一起使用
统计各部门员工个数:
select count(*), departmentnumber from employee group by departmentnumber;
统计部门编号大于 01 的各部门员工个数:
select count(*), departmentnumber from employee where departmentnumber>01 group by departmentnumber;
2.GROUP BY和聚合函数以及HAVING一起使用
统计工资总和大于 8000 的部门:
select sum(salary),departmentnumber from employee group by departmentnumber having sum(salary)>8000;
三、使用ORDER BY对查询结果排序
从表中査询出来的数据可能是无序的或者其排列顺序不是我们期望的。为此,我们可以使用ORDER BY
对查询结果进行排序
其语法格式如下所示:
SELECT 字段名1,字段名2,…
FROM 表名
ORDER BY 字段名1 [ASC | DESC],字段名2 [ASC | DESC];
在该语法中:字段名1、字段名2是查询结果排序的依据;参数 ASC
表示按照升序排序,DESC
表示按照降序排序;默认情况下,按照 ASC
方式排序。通常情况下,ORDER BY
子句位于整个SELECT
语句的末尾。
查询所有员工并按照薪水多少升序排列:
select * from employee order by salary asc;
查询所有员工并按照薪水多少降序排列:
select * from employee order by salary desc;
本文参考:MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)