模糊查询和聚合函数

一、模糊查询

通配符:一类字符,代替一个或多个真正的字符
mysql 通配符
通配符
说明
%匹配任意多个字符字符串
_匹配一个字符
可与 LIKE 关键字一起使用

1、模糊查询 like代替‘’=“配合通配符查询
注意: LIKE 只与字符型数据联合使用
-- 模糊查询 like代替‘=’ 且配合 通配符 _(下杠)或%
select * from Student;
select * from Student where StudentName='王丽丽';
-- 1、"%"表示任意长度任何字符(0-n个字符)
-- 姓张的同学
select * from Student where StudentName like '张%';
-- 含有地址包含‘宿舍'的同学修改地址为'南昌市解放西路213号'
update Student set Address ='南昌市解放西路213号' where Address like '%宿舍%';
-- (名字中包含"三"任意长度字符)
select * from Student where StudentName like '%三%';
-- 2、"_"表示任何字符的一个(1个任意字符)姓王的所有两个字名字的同学
select * from Student where StudentName like '王_';
-- (任意一个字符开始以第二个字符为峰的结束)
select * from Student where StudentName like '_峰%';
-- 3、in 关键字 查询在列举范围内的多个数据值与之匹配的记录,值之间用 ,号分隔
select * from Result where SubjectId = 1 or SubjectId = 2; -- 如果有二十个我
要看其中9个
select * from Result where SubjectId in(1,4,5,9,7,11,12,15,16);-- 用in解决
-- 字符类 多个名字中的其中之一
select * from Student where StudentName in ('张峰','李四','王五','王二麻子','赵
六子');
-- (可以是很多个,多个值之间用,号分隔 可以是字符、数值) 注意数据类型匹配 可以尝试加
not关键字
select * from Result where SubjectId not in(1,4,5,9,7,11,12,15,16);
select * from Student where StudentName not in ('张峰','李四','王五','王二麻
子','赵六子');
-- 4、查询范围区间的数据记录 关键字 between and 包头又包尾 可以尝试加not关键字
select * from Result where StudentResult >=70 and StudentResult<=90; -- 原来
查询
select * from Result where StudentResult between 70 and 90; -- 模糊的方法
select * from Result where StudentResult between 90 and 70 ;
-- 注意开始结束的方向 反了的话语句是正确的结果是没有的
-- 也可以作用于日期类型的数据
select * from Student where BornDate between '1985-01-01 00:00:00:000' and
'1995-12-31 00:00:00:000';
-- 可以加not
select * from Result where StudentResult not between 60 and 80;

二、聚合函数

聚合函数:对一组(多个 0-n )数据进行计算 返回类似统计效果的 一个
聚合查询只返回一个数值,因此,不能够直接与可能返回多行的列一起使用来进行查询,除非该列包含在另一个聚合函数中或在GROUP BY 语句后。 ( 后面学分组查询 )
-- 学生的总成绩、平均成绩、有成绩的学生总共有多少名
select * from Result; -- 有多少id就有多少学生
-- 1、sum()求和
select * from Result where SubjectId = 2;
-- 所有学生的成绩总和
select sum(StudentResult) 总分数 from Result where SubjectId=1; -- 某个科目总
分
select sum(StudentResult) from Result where StudentNo='S1101001';-- 某个学生
总分
-- 2、总数 count()
select count(StudentNo) 总人数 from Result where SubjectId=1; -- 科目1的总人数
select count(*) from Student; -- 也可以这么写 所有学生总数
-- 3、平均数 avg()
select avg(StudentResult) as 平均分 from Result where Subjectid in(1,2);
select avg(StudentResult) as 平均分,COUNT(*) 人数 from Result; -- 可以组合
-- 4、最大值 max()
select MAX(StudentResult) from Result where StudentResult between 60 and 90;
-- 5、最小值 min()
select min(StudentResult) as 最低分 from Result ;
-- 6、统计汇总
-- 年级考试合格的总人数 总分数 平均分 最高分 最低分
select count(StudentNo) 总人数,sum(StudentResult) as 总分,
AVG(StudentResult) 平均分, max(StudentResult) 最高分,
min(StudentResult) as 最低分 from Result where SubjectId='2';

感谢大家的阅读,如有不对的地方,可以私信我,感谢大家!

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值