排序查询
/*
排序查询:对查询结构进行排序
关键字:order by 字段名 [ASC|DESC]
ASC:升序(从小到大),默认的
DESC:降序(从大到小)
*/
# 查询所有记录的name和price,结构按照价格 从大到小进行排序
SELECT pname,price FROM product ORDER BY price DESC;
#1.查询所有商品信息,使用价格排序(降序)
SELECT * FROM product ORDER BY price DESC;
#2.查询所有商品信息,在价格排序(降序)的基础上,以分类排序(降序)
#先将查询结果 在价格上进行降序,如果价格相同再以分类进行降序,如果价格不相同,不在对分类进行排序
SELECT * FROM product ORDER BY price DESC,category_id DESC;
#3.显示商品的价格(去重复),并排序(降序)
SELECT DISTINCT price FROM product ORDER BY price DESC;
聚合查询
/*
聚合查询:
以前的查询都是横向记录查询
而聚合查询是 纵向个数查询
聚合查询的特点:查询到的结构 是单一值
聚合函数:
count:求记录数的聚合函数,count函数会自动忽略空值
以下四个,通常用于数值的计算
max:求最大值
min:求最小值
avg:求平均值
sum:求和
*/
#查询统计多有商品的个数
SELECT COUNT(*) FROM product;
#查询统计一共有多少个分类
SELECT COUNT(category_id) FROM product;
#查询所有商品价格的最大值
SELECT MAX(price) FROM product;
#查询所有商品价格的最小值
SELECT MIN(price) FROM product;
#查询所有商品价格的最平均值
SELECT AVG(price) FROM product;
#查询所有商品价格的总值
SELECT SUM(price) FROM product;
#查询所有商品价格的最大值,最小值,平均值,总和
SELECT MAX(price) AS 最大值,MIN(price) 最小值,AVG(price) 平均值,SUM(price) 总和 FROM product;
分组查询
/*
分组查询:
把查询数据分为几个组
关键字: group by 字段
先分组,再查询,具体查询到的结果数,取决于能分多少组
如果分组后 还有需要条件判断 那么请用having关键字
where和having的区别:
where 写在 基本查询后面的
having 写在 分组查询后面的
where后面是不能写 count sum等聚合函数
having后面可以写count和sum等聚合函数
*/
#查询所有以category_id分组后的价格的总和
# 具体有多少个总和 取决于可以分多少组
SELECT SUM(price) FROM product GROUP BY category_id;
#0 统计所有商品的个数
SELECT COUNT(*) FROM product;
#1 统计各个分类商品的个数
SELECT COUNT(*) FROM product GROUP BY category_id;
#2 统计各个分类商品的个数,且只显示个数大于1的信息
SELECT category_id, COUNT(*) 个数 FROM product GROUP BY category_id HAVING 个数 > 1;
分页查询
/*
分页查询:
只查询记录中的一部分
关键字: limit 数值1(下标,从0开始),数值2(需要查出来记录数)
*/
SELECT * FROM product LIMIT 0,5;
SELECT * FROM product LIMIT 5,5;
SELECT * FROM product LIMIT 10,5;
# 查询的公式: 假设每一页我要查询 n条
# 第1页 limit (1-1)*n,n
# 第2页 limit (2-1)n,n
# 第100页 limit (100-1)*n,n
# 第m页 limit (m-1)*n,n