• MySql的回顾二:排序/常用函数详细介绍


    愉快的时光总是过得很快,月亮悠哉游哉爬上了半空遥望着太阳。上一篇中剩余排序还没回顾,本篇就暂时先来回顾一下排序吧!

    特点:
    1.ASC 代表升序,DESC代表降序
    2.如果不写默认就是升序
    3.ORDER BY 后面支持单个字段,多个字段,表达式,函数,别名
    4.ORDER BY 子句一般是放在查询语句的最后面,但LIMIT除外。
    
    #案例1:查询员工信息,要求工资从高到低排序
    SELECT *
    FROM employees
    ORDER BY salary ASC;

    #案例2.查询部门编号>=90的员工信息,按入职时间的先后排序。【添加筛选条件】

      SELECT *

      FROM employees

      WHERE department_id >= 90

      ORDER BY hiredate ASC;

    #案例3.按年薪的高低显示员工的信息。【按表达式排序】
    SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
    FROM employees
    ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
    =========================================
    SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
    FROM employees
    ORDER BY 年薪 DESC;

    #案例4.按姓名的长度显示员工的姓名和工作。【按函数排序】
    SELECT LENGTH('john');
    ====================================== SELECT LENGTH(last_name) AS 字节长度,last_name,salary FROM employees ORDER BY 字节长度 DESC;
    ======================================= SELECT LENGTH(CONCAT(last_name,first_name)) AS 字节长度, CONCAT(last_name,first_name) AS 姓名, salary AS 工资 FROM employees ORDER BY 字节长度 ASC;

    #案例5.查询员工信息,要求先按工资排序,再按员工编号排序。
    #【ORDER BY 按多个字段排序】
    SELECT *
    FROM employees
    ORDER BY salary ASC,employee_id DESC;

    在日常的学习中,我们在Mysql数据库中的查询会用到一些函数,函数千千万,今天就来看一看。

    #进阶4.常见的函数
    功能:类似于Java中的方法,
    概念:是指将我们实现某个功能的这一组逻辑语句封装到了方法中,对外暴露了一个公开的名字。
    然后回头再用这些逻辑语句,只需要调用方法名就行了。
    好处:
    1.隐藏了实现细节。
    2.提高代码的复用性。
    
    调用: SELECT 函数名(实参列表) 【FROM 表】;
    特点:
    ①叫什么(函数名)
    ②干什么(函数功能)
    
    分类:
    1.单行函数
    如: CONCAT,LENGTH,IFNULL等
    2.分组函数
       功能:做统计使用,又称为统计函数,聚合函数,简称组函数。
    
    接下来会学习到:字符函数,数学函数,日期函数,其他函数,流程控制函数(下一篇在介绍)
    #一.字符函数
    #①length 获取参数数值的字节个数
    SELECT LENGTH('john'); 

    SELECT LENGTH('张三丰haha')

    SHOW VARIABLES LIKE '%char%';

    #②CONCAT 拼接字符串
    SELECT CONCAT(last_name,'_',first_name)
    FROM employees;
    #③UPPER  转大写
    #④LOWER  转小写
    SELECT UPPER('john');
    SELECT LOWER('JOHN');

    #示例:将姓变大写,名变小写,然后拼接。【结论:函数可以嵌套,一个函数的返回值可以做为另一个函数的参数】
    SELECT CONCAT(UPPER(last_name),'_',LOWER(first_name)) AS 姓名
    FROM employees;

    #⑤SUBSTR     字符串截取两个通用,重载有四种
    #SUBSTRING
    #SQL语言中索引从1开始
    SUBSTR(‘字符串’,开始位) ,一个参数截取后面全部
    SELECT SUBSTR('仁爱为接物之本信义为立业之本',11) AS out_put;

    #SUBSTR('字符串',开始位,截取数),从指定索引数,指定字符长度的字符
    SELECT SUBSTR('仁爱为接物之本信义为立业之本',1,2) AS out_put;

    #案例:姓名中首字母大写,其他字符小写,然后用_拼接,显示出来。
    SELECT CONCAT(
    SUBSTR(UPPER(last_name),1,1),
    '_',
    SUBSTR(LOWER(CONCAT(last_name,first_name)),2)
    )
    FROM employees;

    #一.字符函数
    #⑥INTSTR  查起始索引,返回子串第一次出现的索引,如果找不到就返回0
    #INSTR(字符串,substr)
    SELECT INSTR('仁爱为接物之本信义为立业之本','仁爱') AS out_put;

    SELECT INSTR('为接物之本信义为立业之本,尧立孝慈仁爱','仁爱') AS out_put;

    SELECT INSTR('仁爱为接物之本信义为立业之本','亲爱精诚') AS out_put;

    #⑦TRIM 去除空格
    #去除指定的前后字符
    SELECT LENGTH('  亲爱精诚  ') AS out_put;
    SELECT LENGTH(TRIM('  亲爱精诚  ')) AS out_put;

    SELECT TRIM('a' FROM 'aaaaa亲aaa爱aaaa精诚aaaaaaaaa') AS out_put;
    ===============================================================
    SELECT TRIM('aa' FROM 'aaaaa亲aaa爱aaaa精诚aaaaaaaaa') AS out_put;

    #⑧LAPD用指定的字符实现左填充指定的长度
    SELECT LPAD('亲爱精诚','10','a') AS out_put;
    SELECT LPAD('亲爱精诚','2','a') AS out_put;

    #⑨RAPD用指定的字符实现右填充指定的长度
    SELECT RPAD('亲爱精诚',6,'c') AS tou_pus;
    SELECT RPAD('亲爱精诚',2,'c') AS tou_pus;

    #⑩replaca 替换
    SELECT REPLACE('太阳当空照,花儿对我笑','花儿','白云') AS out_put;

    #二.数学函数
    #①ROUND 四舍五入,保留小数
    SELECT ROUND(1.45);
    SELECT ROUND(1.65);
    SELECT ROUND(1.578,2)

    #②CAIL向上取整,返回大于等于该参数的最小整数
    SELECT CEIL(1.003);
    SELECT CEIL(1.000);
    SELECT CEIL(-1.003);

    #③FLOOR向下取整,返回<=该参数的最大整数
    SELECT FLOOR(9.99);
    SELECT FLOOR(9.23);
    ELECT FLOOR(-9.99);
    SSELECT FLOOR(-9.23);

    #④TRUNCATE 截断 (小数,位数)
    SELECT TRUNCATE(1.65,1);
    SELECT TRUNCATE(1.759,1);

    #⑤MOD 取余
    被除数如果是正,则结果为正,被除数如果为负,那结果为负
    SELECT MOD(10,3);
    SELECT MOD(-10,3);
    SELECT MOD(7,-3);
    SELECT 10%3;

    #三.日期函数
    #NOW 返回当前系统日期+时间
    SELECT NOW();

    #CURDATE 返回当前系统日期,不包含时间
    SELECT CURDATE();

    #CURTIME  返回当前的时间,不包含日期
    SELECT CURTIME();

    #可以获取指定的部分,年,月,日,小时,分钟,秒
    YEAR()
    SELECT YEAR(NOW()) AS 年;
    SELECT YEAR('1998-1-1') AS 年;
    SELECT YEAR(hiredate) 年 FROM employees;

    SELECT MONTH(NOW()) 月;
    SELECT MONTHNAME(NOW()) 月英文;

    STR_TO_DATE 将日期格式的字符转换成指定格式的日期
    DATE_FORMAT  将日期转换成字符
    SELECT STR_TO_DATE('07-12-2020','%m-%d-%Y');
    SELECT DATE_FORMAT('2020/07/12','%Y年%m月%d日');

    #查询入职日期为1992-4-3的员工信息。上面理想输入,下面为实际输入。
    SELECT *
    FROM employees
    WHERE hiredate = '1992-4-3';
    ================================================== SELECT
    * FROM employees WHERE hiredate = STR_TO_DATE('4-3 1992','%c-%d %Y');

    #案例:查询有奖金的员工名和入职日期(XX月/XX日 XX年)
    SELECT last_name,DATE_FORMAT(hiredate,'%m月/%d日 %Y年')
    FROM employees
    WHERE commission_pct IS NOT NULL;

    #四.其他函数
    SELECT VERSION();   #查看版本号
    SELECT DATABASE();  #查看当前的数据库
    SELECT USER();      #查看当前的用户

             日常学习中的函数就暂时介绍到这里,各位看官可能有疑问你的流程控制函数能?

    这emmmm.........!!!精彩回顾且听下篇慢慢到来。

  • 相关阅读:
    Activiti Model Editor组件
    Activiti 5.17 实体对象与类和数据库表的映射
    工作流入门链接
    揭秘jbpm流程引擎内核设计思想及构架
    比较Activiti中三种不同的表单及其应用
    Activiti源码分析
    Spring Security教程(5)---- 国际化配置及UserCache
    spring DelegatingFilterProxy管理过滤器
    Apache 处理svg工具包Apache(tm) Batik SVG Toolkit
    Binary Tree Right Side View
  • 原文地址:https://www.cnblogs.com/jxearlier/p/13290116.html
Copyright © 2020-2023  润新知