第五章 简单数据查询、分组查询及聚合函数
- 查询关键字:select
- 分组关键字:group by
- 常用聚合函数:sum、avg、max、min、count
- 简单数据查询示例:
-- 创建数据库(这是注释)
– 添加记录
CREATE DATABASE book;-- 创建表
CREATE TABLE t_student(-- 加下划线表示表的意思
id INT PRIMARY KEY AUTO_INCREMENT, -- 编号
studentName VARCHAR(20),-- 学生姓名
sex VARCHAR(20), -- 性别
birthday DATE, -- 生日
tel VARCHAR(20)
INSERT INTO t_student(studentName,sex,birthday,tel)VALUES(‘张三’,’男’,’1980-09-22’,’13881812530’);
INSERT INTO t_student(studentName,sex,birthday,tel)VALUES(‘谭帅’,’女’,’1994-05-13’,’13423566765’);
INSERT INTO t_student(studentName,sex,birthday,tel)VALUES(‘方俊超’,’男’,’1992-11-04’,’13454376115’);
INSERT INTO t_student(studentName,sex,birthday,tel)VALUES(‘黄瑞’,’女’,’1991-08-02’,’15823217610’);
INSERT INTO t_student(studentName,sex,birthday,tel)VALUES(‘贾老练’,’男’,’1967-11-06’,’134423216667’);
INSERT INTO t_student(studentName,sex)VALUES(‘钟南山’,’非男非女’),(‘张无忌’,’男’),(‘赵敏’,’女’),(‘周芷若’,’女’),(‘李莫愁’,’女’),(‘谢逊’,’金毛狮王’)
,(‘周润发’,’女’),(‘李魁’,’女’),(‘不谢’,’金毛狮王’);
– 查询表中所有的数据 *表示查询所有的列
SELECT * FROM t_student;
– 查询给定条件的数据
SELECT * FROM t_student WHERE sex=’男’;
SELECT * FROM t_student WHERE studentName LIKE ‘%张%’;
SELECT * FROM t_student WHERE studentName LIKE ‘李_’;
SELECT * FROM t_student WHERE tel LIKE ‘134%’;– 查询电话134开头的号码
SELECT * FROM t_student WHERE studentName LIKE ‘%李%’ AND sex=’女’;– 查询两个条件的数据
SELECT * FROM t_student WHERE birthday>=’1980-01-01’AND birthday<’1990-01-01’;
SELECT * FROM t_student WHERE tel LIKE ‘13%’ OR tel LIKE ‘15%’;
SELECT * FROM t_student LIMIT 2,3;– 第一个参数2表示从第几条开始;第二个参数3表示显示几条信息
SELECT * FROM t_student ORDER BY birthday DESC;– 排序 默认为升序,加DESC为降序排序
SELECT * FROM t_student ORDER BY birthday DESC LIMIT 0,1;– 查询年龄最小的
SELECT * FROM t_student WHERE tel IS NULL;– 查询没有电话的
SELECT * FROM t_student WHERE id IN (3,5,8);– 查询ID号不连续的指定人物信息
SELECT DISTINCT sex FROM t_student; – 查询所有性别,distinct表示去除重复记录 - 分组查询示例
分组查询作用是以一列的数据作为分组依据,得到以其不同数据分组后的表数据。
`SELECT region FROM bbc GROUP BY region;
– 显示每个地区信息
SELECT region FROM bbc GROUP BY region;
– 显示每个地区的总人口数和总面积,以总人口排序,仅显示那些面积超过1000000的地区
SELECT region,SUM(population) sp,SUM(contryArea) sa FROM bbc GROUP BY region HAVING sa>1000000 ORDER BY sp;
– 显示每个地区的总人口数和总面积,以总人口排序
6. 常用聚合函数的应用示例
SELECT region,SUM(population) s,SUM(contryArea)’总面积’ FROM bbc GROUP BY region ORDER BY s;
– 显示每个地区以及该地区国家总人口数不少于10000000的国家总数
SELECT region,COUNT(CASE WHEN population>=10000000 THEN contryName END)’10000000以上人口国家数’ FROM bbc GROUP BY region;
SELECT region,COUNT(population) FROM bbc WHERE population>=10000000 GROUP BY region;– 比上面语句执行起来更高效
– 列出人口总数不少于100000000的地区
SELECT region,SUM(CASE WHEN population>=100000000 THEN population END) FROM bbc GROUP BY region;
SELECT region,SUM(population) su FROM bbc GROUP BY region HAVING su>=100000000;
– 显示欧州人口总数和总GDP
SELECT region,SUM(population),SUM(gdp) FROM bbc WHERE region=’Europe’;
– 显示每个地区的总人口数和总面积,以总人口排序,仅显示那些面积超过1000000的地区
SELECT region,SUM(population) sp,SUM(contryArea) sa FROM bbc GROUP BY region HAVING sa>1000000 ORDER BY sp;`