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

Posted 木卯生十木

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

#⑩replace 替换
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);
SELECT FLOOR(-9.99);
SELECT 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.........!!!精彩回顾且听下篇慢慢到来。

以上是关于MySql的回顾二:排序/常用函数详细介绍的主要内容,如果未能解决你的问题,请参考以下文章

最全最详细publiccms常用的代码片段

最全最详细publiccms其他常用代码片段(内容站点)

MySQL分组、排序

Mysql 基础排序查询及常用函数

C#常用代码片段备忘

MySQL常用函数------详细