Mysql进阶查询及常见函数

排序查询

  • 语法

  • SELECT 查询列 FROM 表 WHERE 筛选条件 ORDER BY 排序列 [asc/desc];
    desc:降序
    asc:升序
    
  • 示例

  • SELECT * FROM employees ORDER BY salary DESC;
    
  • 特点

    • 默认为升序
    • order by字句中可以支持单个字段、多个字段、表达式、函数、别名。
    • order by一般放在查询语句最后,limiit除外

常见函数

  • 类似与Java中的方法。

  • select 函数名(参数)

  • 特点

    • 单行函数:concat,length,ifnull等
    • 分组函数:做统计使用,又称为统计函数、聚合函数、组函数。

单行函数

  • 字符函数

    • length:获取参数值的字节数。

    • concat:拼接字符串

    • upper:将参数值转换为大写

    • lower:将参数值转换为小写

    • substr:索引从1开始

      • (str, ops):截取从指定索引到末尾
      • (str, ops, len):截取从指定索引到指定长度
    • instr(str, str):返回子字符串第一次出现的索引,找不到返回0。

    • trim:去除字符串前后空格

      • 去除特定字符

      • SELECT trim('a' FROM "aaabbbaa") astr;
        
    • lpad:用指定的字符将源字符串左填充到指定长度

      • SELECT lpad('aa',10,'a');
        
    • rpad:用指定的字符将源字符串右填充到指定长度

      • 注:左填充和右填充时当指定的长度比源字符串小时,源字符串右方多余的字符会被去除。
    • replace:找到参数一字符串中所有的参数二的字符串替换为参数三。

      • SELECT replace('aabbcc', 'cc', 'dd');
        
  • 数学函数

    • round:四舍五入
      • (数值)
      • (数值, 保留位数)
    • ceil:向上取整,返回大于等于该参数的所有整数
    • floor:向下取整,返回小于等于该参数的所有整数
    • truncate:截断,截取保留小数点后n位
    • mod:取余,和%运算符同理
  • 日期函数

    • now:当前系统日期包括时间
    • curdate:当前系统日期不包括时间
    • curtime:当前系统时间不包括日期
    • year:根据date获取年
    • month:获取月,其余同理。
    • monthname:获取月名,英文
    • str_to_date:将字符串通过指定的格式转换为默认格式
    • date_format:将字符串转换为指定格式的日期字符串
格式符 功能
%Y 四位年份
%y 二位年份
%m 一位补零月份
%c 一位不补零月份
%d 一位补零日
%H 小时24小时制
%h 小时12小时制
%i 两位分钟
%s 两位秒
  • 其他函数

    • version:版本
    • database:当前数据库
    • user:当前用户
  • 流程控制函数

    • if(条件表达式, 值为true, 值为false)

    • case:

      • 类似java中的switch和case

      • case 要进行的判断
        when 常量 then 要显示的值或语句
        when 常量1 then 要显示的值1或语句1
        else 要显示的值n或语句n
        end
        
      • 类似java中的多重if

      • case when 条件1
        then 要显示的值1或语句1
        when 条件2 then 要显示的值2或语句2
        else 要显示的值3或语句3
        end
        

分组函数

  • sum:求和
  • avg:平均值
  • max:最大值
  • min:最小值
  • count:计算个数
  • 注:
    • 多个分组函数可以连用。
    • sum、avg一般用于处理数值型。
    • max、min、count可以处理任何类型。
    • null值会被忽略。
    • count(*)一般用于统计行数。
    • 和distinct搭配去重。
    • 和分组函数一同查询的字段要求是group by后的字段。

group by

  • 语法

    • SELECT 分组函数,列(要求出现再group by中)
      FROM 表
      WHERE 筛选条件
      GROUP BY 分组的列表
      ORDER BY 排序列表
      
  • 使用having进行分组后筛选

  • 分组查询中的筛选

    • 分组前筛选 原始表
      • 在分组前使用where
    • 分组后筛选 分组后结果集
      • 在分组后使用having
  • group by子句支持单个字段分组,多个字段分组,表达式或函数。

  • 在最后可以添加排序

  • 注:查询列表必须特殊,要求是分组函数和group by后出现的字段

发布了50 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_25884515/article/details/103878871
今日推荐