通过前面的多篇博文,我们已经可以进行对数据库的基本操作了,但是数据库是远远不止这些的,接下来我们将会进入更深层次的数据库学习,勤学苦练才能有所得。
下面将介绍数据库的重要查询方式
1.排序查询
对查询结构进行排序
关键字:order by 字段名 [ASC|DESC]
ASC:升序 从小到大 (默认的)
DESC:降序 从大到小
我们还是以上篇文章的 commodity 表为例进行查询
#我们对表中的cname(商品名称)和cprice(商品价格)进行查询并按cprice(商品价格)大小进行排序 #按商品价格小到大顺序 SELECT cname,cprice FROM commodity ORDER BY cprice ASC; #按商品价格大到小顺序 SELECT cname,cprice FROM commodity ORDER BY cprice DESC; #查询所有商品按价格从小到大排序 SELECT * FROM commodity ORDER BY cprice ASC; #查询所有商品信息,在价格(降序)的基础上 ,以cid排序(降序) -- 在此查询中 我们是以价格为主进行查询,当价格相同时我们才会以cid对价格相同的商品进行降序查询 SELECT *FROM commodity ORDER BY cprice DESC,cid DESC;
2.聚合查询
以前的查询都是横向查询,而聚合查询是纵向个数查询。
聚合查询的特点:查询到的结构是 单一值
聚合函数
count:求记录数的聚合函数,count函数会自动忽略空值
以下四个常用于数值查询:
max:最大值
min:最小值
avg:平均值
sun:总和
我们以代码为例进行学习
#查询所有商品信息 SELECT COUNT(*) FROM commodity; #以ctype(商品类型)进行聚合查询 SELECT COUNT(ctype) FROM commodity; #查询所有商品价格的最大值 SELECT MAX(cprice) FROM commodity; #查询所有商品价格的最小值 SELECT MIN(cprice) FROM commodity; #查询所有商品最大值,最小值,平均值,总和 SELECT MAX(cprice) AS 最大值,MIN(cprice) 最小值,AVG(cprice) 平均值,SUM(cprice) 总和 FROM commodity;
3.分组查询
把查询分为几个组
关键字:group by 字段
先分组,再查询。具体查询结果数,取决能分多少组。
如果分组后还有需要条件判断 那么我们使用 having 关键字
where 和 having之间的区别:
where 写在基本查询后面
having 写在分组查询后面
where 后面不能写 count sum等聚合函数
而having后面能够写
如下实例
#查询所有以ctype分组后的价格总和 SELECT SUM(cprice) AS 以stype分组后的价格总和 FROM commodity GROUP BY ctype; #统计商品总数 SELECT COUNT(*) FROM commodity; #按照商品类型进行分组 SELECT COUNT(*)FROM commodity GROUP BY ctype; #统计各个类型商品的个数,且显示个数大于1的 SELECT COUNT(*) 个数 FROM commodity GROUP BY ctype HAVING 个数>1;
4.分页查询
只查询记录中的一部分
关键字:limit 数值1(查询下标 从零开始),数值2(需要查询的记录数)
#查询表中前5条数据 SELECT * FROM commodity LIMIT 0,5; #查询第6条后的2条数据 SELECT *FROM commodity LIMIT 6,2;