mysql数据库高级查询用法
1.in的用法
使用场景:做条件查询的时候,条件字段的取值有多个的情况
select * from student_info where id = 1 or id =4; # 此处字段id取值存在多个情况,可以使用in方法 select * from student_info where id in (1,4)
not in()条件字段不在某个数据集内
select * from student_info where id not in (1,4)
2.模糊查询like用法
使用场景:做条件查询时,条件字段值不完整的情况下。此处使用"%"或者"_"来做模糊匹配
%模糊匹配,%可以匹配任意长度字符
-- 用%来匹配条件字段的前半部分 select * from student_info where name like'%热巴' -- 用%来匹配条件字段中间部分 select * from student_info where name like'%麻%' -- 用%来匹配条件字段后半部分 select * from student_info where name like'开%'
_模糊匹配,一个"_"只能匹配一个字符
select * from student_info where name like'_心';
3.掌握count()的用法
使用场景:获取一个表格里面所有树库的条数,或者满足条件的数据的条数
# 未指定字段且无查询条件 select count(*) from student_info; #指定字段且有查询条件 select count(id) from student_info where age = 10;
4.去重distinct的用法
使用场景:去除查询结果中的重复数据
# 未去重之前,查询结果,存在重复id select class_id from student_info
# 去重之后查询结果 select distinct class_id from student_info
5.between的用法
使用场景:条件查询时,条件字段的值处于某两个值之间的情况
查询成绩在80-90之间的学生姓名
select name,score from student_info where score between 80 and 90;
6.mysql常用函数
6.1 数值类型函数
- 求一列的最小值:min()
select min(score) from student_info
- 求一列的最大值:max()
select max(score) from student_info
- 求一列的平均值:avg()
select avg(score) from student_info
- 求一列的和:sum()
select sum(score) from student_info
6.2 日期类型函数
- sysdate():系统日期函数(年月日时分秒)
select sysdate() 结果:2021-07-29 13:42:09
- curdate()系统日期函数(年月日)
select curdate() 结果:2021-07-29
- curtime()系统时间函数(时分秒)
select curtime() 结果:13:43:52
- year()根据指定日期获取日期的年分值
select year(curdate())
结果:2021 - month()根据指定日期获取日期的月分值
select month(curdate()) 结果:7
- day()根据指定日期获取日期的天数是当月的第几天
select day(curdate()) 结果:29
- date_add() 在某个日期的基础上增加一个时间间隔
select date_add(curdate(),interval 5 day);#在当前日期加上5天 结果:2021-08-03
- date_sub() 在某个日期的基础上减去一个时间间隔
select date_sub(curdate(),interval 3 day);#在当前日期减去3天 结果2021-07-26
6.3 字符串函数
- concat()函数:可以将多个常量值拼接起来,也可以将多个字段拼接起来
select concat(1,2,3,'a','c','f')#拼接常量值
select concat(name,age) from student_info #拼接字段
- substr()函数
语法 substr(str,pos)str代表要操作的字符串,pos代表起始位置 #member表截取手机尾号后四位 select substr(mobile_phone,8) from member
语法 substr(str,pos,len)str代表要操作的字符串,pos代表起始位置,len代表截取的长度 select substr(mobile_phone,1,5) from member
-
length()函数:获取一个值的长度
# 获取字段长度 select length(mobile_phone) from member # 获取常量长度 select length('helloworld')
7.group by 函数
- 查询信息必须有聚合函数,常见的聚合函数:count(),sum(),avg(),min(),max()
- group by 后面的分组字段必须与select后面的查询字段保持一致
- 如果要在分组上的基础上进行进一步过滤,则需要使用having+过滤条件来完成
- 班级表:
- 学生表:
select t1.name,t1.id,count(*)from class t1,student_info t2 where t1.id=t2.class_id group by t1.id;
本文来自博客园,作者:大头~~,转载请注明原文链接:https://www.cnblogs.com/xiaoying-guo/p/15074887.html