排序查询

/*

排序查询:对查询结构进行排序

关键字: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

01-25 00:49