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;
    

posted @ 2021-07-29 14:30  大头~~  阅读(273)  评论(0编辑  收藏  举报