概述:
- 重点介绍以下几个子句:limit,order by,like/not like,in,group by,having以及统计函数count(col),max(col),avg(col);
以下均以china数据库为例
一、limit和order by:
limit x:从查询结果中取前 x 条记录:
举个栗子:
#取出前五的省市区 SELECT * FROM t_province LIMIT 5; SELECT * FROM t_city LIMIT 5; SELECT * FROM t_district LIMIT 5;
---------------------------------------------------------分割线--------------------------------------------------------
order by xxx asc/desc: 查询结果按xxx字段升序/降序排列
举个栗子:
#查询所有的省按名称升序排列: SELECT * FROM t_province ORDER BY ProRemark DESC; SELECT * FROM t_province ORDER BY proname ASC LIMIT 7;
---------------------------------------------------------分割线----------------------------------------------------------
二、like/not like,in
like:where xxx like/not like %x/x%/%x% 查询条件是否符合%x/x%/%x%,%表示任意字符
举个栗子:
#查询所有带“南”的省; SELECT * FROM t_province WHERE proName LIKE "%南省"; #查询所有不叫省的: SELECT * FROM t_province WHERE proName NOT LIKE "%省";
---------------------------------------------------------分割线---------------------------------------------------------
in : where xxx in ('xxx','xxxx','xxxx','xxx') 查询条件为在('xxx','xxxx','xxxx','xxx')里面的
举个栗子:
#查询我国有没有申奥城市: SELECT * FROM t_province WHERE proName IN ("巴黎","东京","伦敦","北京市","纽约");
---------------------------------------------------------分割线-------------------------------------------------------
三、count()、max( )、min()、avg()
统计函数:
count(xxx) 获得查询xxx的数量
max(xxx)获得查询xxx后最大的那条记录
min(xxx)获得查询xxx中最小的那条记录
avg(xxx)获得查询xxx的平均值
举个栗子:
#count(),max(),min(),avg(), #查询名字中带有“南”的各种记录: SELECT COUNT(*) FROM t_province WHERE proName LIKE "%南%"; ---->4 SELECT MIN(proid) FROM t_province WHERE proName LIKE "%南%";---->16 SELECT MAX(proid) FROM t_province WHERE proName LIKE "%南%";---->30 SELECT AVG(proid) FROM t_province WHERE proName LIKE "%南%";---->21
---------------------------------------------------------分割线-----------------------------------------------------------------
四、group by , having
group by xxx 按xxx字段分组,分组是为了统计
举个栗子:
#按省份分组 #select proName from t_province where proid=( SELECT proid,COUNT(cityid) AS num FROM t_city GROUP BY proid ORDER BY num DESC LIMIT 10;
---------------------------------------------------------分割线--------------------------------------------------------
having xxx 对分组后的数据按xxx条件筛选
举个栗子:
#罗列有15个地级市的省份 SELECT proid,COUNT(cityid) AS num FROM t_city GROUP BY proid HAVING num > 15 ORDER BY num DESC;