排序查询
/*
排序查询: 对查询结构进行排序
关键字: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