MySQL排序查询介绍\常见函数介绍\分组函数介绍

MySQL排序查询介绍\常见函数介绍\分组函数介绍

排序查询介绍

语法:SELECT查询列表 FROM 表名 [WHERE 筛选条件] ORDER BY 排序列表[ASC(升)/DESC(降)];
特点:i、ASC代表升序,DESC代表降序,如果不写,默认是升序
   ii、ORDER BY 子句中可以支持单个字段、多个字段,表达式、函数、别名
   iii、ORDER BY子句一般放在查询语句的最后面,LIMIT子句除外
1、按表达式排序:
  SELECT *,表达式 AS 别名 FROM 表名ORDER BY 表达式 DESC;
2、按别名排序:
  SELECT *,表达式 AS 别名 FROM 表名 ORDER BY 别名 DESC;
3、按函数排序:
  SELECT LENGTH(字段名)字节长度 FROM 表名 ORDER BY LENGTH(字段名) DESC;
4、按多个字段排序:
  SELECT * FROM 表名 ORDER BY 字段名1 ASC,字段名2 DESC;

常见函数介绍

概念:类似于Java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名。
好处:1、隐藏实现细节,
   2、提高代码的重用性。
调用:SELECT 函数名(实参列表) 【FROM 表名】;
   i、叫什么(函数名)ii、干什么(函数功能)
分类:1、单行函数:CONCAT,LENGTH,IF NULL等,
   分类:字符函数,数学函数,日期函数,其他函数,流程控制函数。
    2、分组函数:功能:做统计使用,又称统计函数,聚合函数,组函数。

一、字符函数(函数可嵌套使用)

1、LENGTH:用于获取参数的字节个数
      SELECT LENGTH(‘John’);——【4】
      SELECT LENGTH(‘张三丰hahaha’)——3+3+3+6【15】
注意:字符集utf8:1 character=3 bytes,1 汉字=1 character,一个汉字占3个字节,一个英文字母占一个字节
   字符集gbk:1 character=2 bytes,1 汉字=1 character,一个汉字占2个字节,一个英文字母占一个字节
2、CONCAT:用于拼接字符串
      SELECT CONCAT(‘字符串1’,‘字符串2’,······) 别名 FROM 表名
3、UPPER:字母全大写
      SELECT UPPER(‘Jhon’);——【JHON】
4、LOWER:字母全小写
      SELECT LOWER(‘Jhon’);——【jhon】
5、SUBSTR\SUBSTRING:索引(从1开始)
             截取从指定索引处后面所有的字符
             SELECT SUBSTR(‘李莫愁爱上陆湛远’,7);——【陆湛远】
             截取从指定索引处指定字符长度的字符
             SELECT SUBSTR(‘李莫愁爱上陆湛远’,1,3);——【李莫愁】
6、INSTR:返回子串第一次出现索引,如果找不到返回0
SELECT INSTR(‘李莫愁爱上陆湛远’,‘陆湛远’);——【6】
7、TRIM:去除字符串前后的字符
     SELECT TRIM(‘a’ FROM ‘aaa张aaa翠山aaa’);——【张aaa翠山】
8、LPAD:用指定的字符实现左填充指定长度
     SELECT LPAD(‘王保保’,10,‘a’);——【aaaaaaa王保保】
9、RPAD:用指定的字符实现右填充指定长度
SELECT RPAD(‘王保保’,10,‘a’);——【王保保aaaaaaa】
10、REPLACE:替换
        SELECT REPLACE(‘李莫愁爱上陆湛远’,‘李莫愁’,‘赵敏’);——【赵敏爱上陆湛远】

二、数学函数

1、ROUND:四舍五入
       SELECT ROUND(1.65);——【2】
       SELECT ROUND(-1.65);——【-2】
       SELECT ROUND(1.567,2);——【1.57】
2、CEIL:向上取整,返回大于等于该参数的最小整数
     SELECT CEIL(1.002);——【2】
     SELECT CEIL(1.000);——【1】
     SELECT CEIL(-1.02);——【-1】
3、FLOOR:向下取整,返回小于等于该参数的最大整数
      SELECT FLOOR(-9.99);——【-10】
4、TRUNCATE:截断,小数点后取几位
        SELECT TRUNCATE(1.56,1);——【1.5】
5、MOD:取舍
     MOD(a,b):a-a/bb
     MOD(-10,-3)😦-10)-(-10)/(-3)
(-3)=(-10)-3*(-3)=-10-9=-1
     结果的正负由前一个数值决定
     SELECT MOD(10,3);——【1】
     SELECT MOD(-10,-3);——【-1】
     SELECT 10%3;——【1】

三、日期函数

1、NOW返回当前系统日期+时间
  SELECT NOW();
2、CURDATE返回当前系统日期,不包含时间
  SELECT CURDATE();
3、CURTIME返回当前系统时间,不包含日期
  SELECT CURTIE();
4、可以获取指定的部分,年、月、日、小时、分钟、秒
  SELECT TEAR(NOW()) 年;
  SELECT TEAR(‘1998-1-1’) 年;——【1998】
  SELECT TEAR(’‘字符串) 年 FROM 表名;
5、STR_TO_DATE将日期格式的字符转换成指定格式的日期
  STR_TO_DATE(‘9-13-1999’,’%M-%D-%Y’);——【1999-09-13】
6、DATE_FORMAT:将日期转换成字符
  DATE_FORMAT(‘2018/6/6’,’%Y年%m月%d日’);——2018年06月06日
 在这里插入图片描述

四、其他函数

1、查询MySQL版本号:
           SELECT VAERSION();
2、查询当前数据库:
           SELECT DATABASE();
3、查询当前用户:
           SELECT USER();

五流程控制函数

1、IF函数:if else的效果
     SELECT IF(10>5,’’,’’);
     SELECT 字段名 IF(字段名 IS NULL,‘字符1’,‘字符2’) FROM 表名;
2、CASE函数的使用一:switch case的效果,多用于显示等于——等于判断
           java中:switch(变量或表达式){
                         case 常量1:语句1;break;
                         case 常量2:语句2;break;
                         ······
                         default:语句n;break;
           MySQL中:CASE 要判断的字段或表达式
                WHEN 常量1 YHEN 要显示的值1或语句1;
                WHEN 常量2 YHEN 要显示的值2或语句2;
                ······
                ELSE 显示的值n或语句n;
                END;
CASE函数的使用二:类似于多重if语句,多用于显示区间——区间判断
          java中:if(条件1){
                    语句1;
               }else if(条件2){
                    语句2;
               }······
               else{
                    语句n;
               }
          MySQL中:CASE
               WHEN 条件1 THEN 显示的值1或语句1
               WHEN 条件2 THEN 显示的值2或语句2
               ·······
               ELSE 显示的值n或语句n
               END;

分组函数介绍

功能:做统计使用,又称统计函数,聚合函数,组函数。
分类:SUM 求和,AVG 平均值,MAX 最大值,MIN 最小值,COUNT 计算个数。
1、简单使用:
  SELECT SUM(字段名) FROM 表名;
  SELECT SUM(字段名),AVG(平均值) FROM 表名;
2、函数支持哪些类型:
  SUM,AVG一般用于处理数值型;MAX,MIN,COUNT可以处理任何类型
3、是否忽略NULL值:
  以上分组函数均忽略NULL值
4、和DISTINCT去重搭配
  SELECT SUM(DISTINCT 字段名) FROM 表名;
5、COUNT函数的详细介绍
  SELECT COUNT() FROM 表名;——统计表的总行数
  SELECT COUNT(常量值) FROM 表名;——新建一列,统计表的总行数
  效率:MYISAM存储引擎下,COUNT(
)效率更高;
     INNODB存储引擎下,COUNT(*)和COUNT(常量值)的效率差不多,比COUNT(字段)要高一些;
6、和分组函数一同查询的字段有限制,字段要求是GROUP BY后的字段

分组查询介绍

语法:SELECT 分组函数,列(要求出现在GROUP BY的后面)
   FROM 表
   [WHERE 筛选条件]
   GROUP BY 分组的列表
   [HAVING 筛选条件]
   [ORDER BY 子句]
注:查询列表必须特殊,要求是分组函数和GROUP BY后出现的字段
特点:1、分组查询中的筛选条件分为两类

数据源位置关键字
分组前筛选原始表GROUP BY子句的前面WHERE
分组后筛选分组后的结果集GROUP BY子句的后面HAVING

i、分组函数做条件肯定是放在HAVING子句中;
     ii、能用分组前筛选的,就优先考虑使用分组前的筛选
    2、GROUP BY子句支持单个字段分组,多个字段分组(多个字段之间用逗号隔开没有顺序要求),表达式或函数(用的较少)
    3、也可以添加排序(排序放在整个分组查询的最后)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值