eg1:找出表中攻击力最大值
mysql> select max(attack) from class_1;
eg2:找出表中记录了多少人,一般使用 id 获取
mysql> select count(id) from class_1;
eg3:找出攻击力大于200的英雄数量
mysql> select count(id) from class_1 where attack > 200;
2. group by
给查询结果进行分组
group by 后字段名必须要为 select 后的字段,查询字段和group by 后字段不一致,则必须对该字段进行聚合处理(聚合函数)。
eg1:计算每个国家的平均攻击力
mysql> select country,avg(attack) from sanguo group by country;
eg2:查询所有国家的男英雄中,英雄数量最多的前2名的,国家名称及英雄数量
mysql> select country,count(id) as number from sanguo
mysql> where gender="m" group by country
mysql> order by number desc
mysql> limit 2;
3. having 语句
对分组聚合后的结果进行进一步筛选
having 语句通常与 group by 联合使用,having 语句存在弥补了 where 关键字不能与聚合函数联合使用的不足,where 只能操作表中实际存在的字段, having 操作的是聚合函数生成的显示列。
eg:找出平均攻击力大于105的国家的前2名,显示国家名称和平均攻击力
mysql> select country,avg(attack) as number from sanguo
mysql> group by country
mysql> having avg(attack)>105
mysql> order by avg(attack) desc
mysql> limit 2;
4. distinct 语句
不显示字段重复值
distinct 和 from 之间所有字段都相同才会去重, distinct 不能对任何字段做聚合处理,但可以对去重后的字段进行聚合操作。
eg1:表中都有哪些国家
mysql> select distinct country from sanguo;
eg2:查询表中名字国家唯一的值
mysql> select distinct name,country from sanguo;
eg3:计算一共有多少个国家
mysql> select count(distinct country) from sanguo;
5. 查询表记录时做数学运算
运算符 : - * / % **
eg1: 查询时显示攻击力翻倍
mysql> select name, attack*2 from sanguo;
eg2: 更新蜀国所有英雄攻击力 * 2
mysql> update sanguo set attack=attack*2 where country="蜀国";