函数

函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着,这一段程序或代码在MySQL中
已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。 那
么,函数到底在哪儿使用呢?
我们先来看两个场景:
        1). 在企业的OA或其他的人力系统中,经常会提供的有这样一个功能,每一个员工登录上来之后都能
够看到当前员工入职的天数。 而在数据库中,存储的都是入职日期,如 2000-11-12,那如果快速计
算出天数呢?
        2). 在做报表这类的业务需求中,我们要展示出学员的分数等级分布。而在数据库中,存储的是学生的 分数值,如98/75,如何快速判定分数的等级呢?
其实,上述的这一类的需求呢,我们通过MySQL中的函数都可以很方便的实现 。

MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。

字符串函数

MySQL 中内置了很多字符串函数,常用的几个如下:
-- -----------------字符串函数演示------------------------
-- concat 字符串拼接,将S1,S2,...Sn拼接成一个字符串
select concat('Hello', 'MySQL');-- lower 将字符串str全部转为小写
select lower('Hello');-- upper 将字符串str全部转为大写
select upper('Hello');-- lpad 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
select lpad('01', 5, '-');-- rpad 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
select rpad('01', 5, '-');-- trim 去掉字符串头部和尾部的空格
select trim(' Hello  MySQL ');-- substring  返回从字符串str从start位置起的len个长度的字符串
select substring('Hello MySQL', 1, 5);

数值函数

常见的数值函数如下:

具体实现代码

-- ---------------------数值函数-----------------------
-- ceil 向上取整
select ceil(1.1);-- floor 向下取整
select floor(1.9);-- mod 返回x/y的模
select mod(7, 4);-- rand 返回0~1内的随机数
select rand();-- round 求参数x的四舍五入的值,保留y为小数
select round(2.34, 2);-- 案例:通过数据库的函数,生成一个六位数的验证码
select lpad(round(rand() * 1000000, 0), 6, '0');

日期函数

常见的日期函数如下:

演示如下

-- -------------------日期函数----------------
-- curdate()  返回当前日期
select curdate();-- curtime()  返回当前时间
select curtime();-- now()  返回当前日期和时间
select now();-- year(date)  获取指定date的年份
select year(now());-- month(date)  获取指定date的月份
select month(now());-- day(date)  获取指定date的日期
select day(now());-- date_add(date,interval expr type)  返回一个日期/时间值加上一个时间间隔expr后的时间值
select date_add(now(), interval 70 day);-- datediff(date1,date2)  返回起始时间date1和结束时间date2之间的天数
select datediff('2021-3-06', '2022-11-01');-- 案例:查询所有员工的入职天数,并根据入职天数倒序排序
select name, datediff(curdate(), entrydate) as 'entrydays'
from emp
order by entrydays desc;

流程函数

流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。
-- ---------------流程函数--------------、
-- if(value,t,f)  如果value为true,则返回t,否则返回f
select if(false, 'ok', 'error');-- ifnull(value1,value2)  如果value1不为空,返回value1,否则返回value2
select ifnull('ok', 'default');select ifnull('', 'default');select ifnull(null, 'default');-- case when [val1] then [res1]...else[default]end 如果val1为true,返回res1,...否则返回default默认值
-- 需求:查询emp表的员工姓名和工作地址(北京/上海---> 一线城市,其他---> 二线城市)
select name,(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址'
from emp;

流程函数用到的数据

-- 准备数据
create table dept
(id   int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部门名称'
) comment '部门表';create table emp
(id          int auto_increment comment 'ID' primary key,name        varchar(50) not null comment '姓名',age         int comment '年龄',job         varchar(20) comment '职位',salary      int comment '薪资',entrydate   date comment '入职时间',managerid   int comment '直属领导ID',dept_id     int comment '部门ID',workaddress int         not null
) comment '员工表';-- 添加外键
alter table empadd constraint fk_emp_dept_id foreign key (dept_id) references dept (id);INSERT INTO dept (id, name)
VALUES (1, '研发部'),(2, '市场部'),(3, '财务部'),(4, '销售部'),(5, '总经办'),(6, '人事部');
INSERT INTO emp (id, name, age, job, salary, entrydate, managerid, dept_id)
VALUES (1, '金庸', 66, '总裁', 20000, '2000-01-01', null, 5),(2, '张无忌', 20, '项目经理', 12500, '2005-12-05', 1, 1),(3, '杨逍', 33, '开发', 8400, '2000-11-03', 2, 1),(4, '韦一笑', 48, '开发', 11000, '2002-02-05', 2, 1),(5, '常遇春', 43, '开发', 10500, '2004-09-07', 3, 1),(6, '小昭', 19, '程序员鼓励师', 6600, '2004-10-12', 2, 1),(7, '灭绝', 60, '财务总监', 8500, '2002-09-12', 1, 3),(8, '周芷若', 19, '会计', 48000, '2006-06-02', 7, 3),(9, '丁敏君', 23, '出纳', 5250, '2009-05-13', 7, 3),(10, '赵敏', 20, '市场部总监', 12500, '2004-10-12', 1, 2),(11, '鹿杖客', 56, '职员', 3750, '2006-10-03', 10, 2),(12, '鹤笔翁', 19, '职员', 3750, '2007-05-09', 10, 2),(13, '方东白', 19, '职员', 5500, '2009-02-12', 10, 2),(14, '张三丰', 88, '销售总监', 14000, '2004-10-12', 1, 4),(15, '俞莲舟', 38, '销售', 4600, '2004-10-12', 14, 4),(16, '宋远桥', 40, '销售', 4600, '2004-10-12', 14, 4),(17, '陈友谅', 42, null, 2000, '2011-10-12', 1, null);
update emp
set workno = 01,gender ='男'
where id = 1;
update emp
set workno = 02,gender ='男'
where id = 2;
update emp
set workno = 03,gender ='男'
where id = 3;
update emp
set workno = 04,gender ='男'
where id = 4;
update emp
set workno = 05,gender ='男'
where id = 5;
update emp
set workno = 06,gender ='男'
where id = 6;
update emp
set workno = 07,gender ='女'
where id = 7;
update emp
set workno = 08,gender ='女'
where id = 8;
update emp
set workno = 09,gender ='女'
where id = 9;
update emp
set workno = 10,gender ='女'
where id = 10;
update emp
set workno = 11,gender ='男'
where id = 11;
update emp
set workno = 12,gender ='男'
where id = 12;
update emp
set workno = 13,gender ='男'
where id = 13;
update emp
set workno = 14,gender ='男'
where id = 14;
update emp
set workno = 15,gender ='男'
where id = 15;
update emp
set workno = 16,gender ='男'
where id = 16;
update emp
set workno = 17,gender ='男'
where id = 17;update emp
set workaddress='北京'
where id = 1;
update emp
set workaddress='上海'
where id = 2;
update emp
set workaddress='北京'
where id = 3;
update emp
set workaddress='哈尔滨'
where id = 4;
update emp
set workaddress='河南'
where id = 5;
update emp
set workaddress='广州'
where id = 6;
update emp
set workaddress='南京'
where id = 7;
update emp
set workaddress='江苏'
where id = 8;
update emp
set workaddress='深圳'
where id = 9;
update emp
set workaddress='四川'
where id = 10;
update emp
set workaddress='成都'
where id = 11;
update emp
set workaddress='香港'
where id = 12;
update emp
set workaddress='天津'
where id = 13;
update emp
set workaddress='北京'
where id = 14;
update emp
set workaddress='山东'
where id = 15;
update emp
set workaddress='湖南'
where id = 16;
update emp
set workaddress='贵州'
where id = 17;

MySQL中几种常见的函数及具体操作相关推荐

  1. Mysql中4种常见的插入方式

    4种常见insert方式 准备工作 CREATE TABLE `identity_table` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id' ...

  2. Java中 9 种常见的 CMS GC 问题分析与解决

    目录 Java中 9 种常见的 CMS GC 问题分析与解决 1. GC 1.1 引言 1.2 概览 2. GC 基础 2.1 基础概念 2.2 JVM 内存划分 2.3 分配对象 2.4 收集对象 ...

  3. unity3d中画线有几种方式_Spring RestTemplate中几种常见的请求方式

    原文 https://segmentfault.com/a/1190000011093597 在Spring Cloud中服务的发现与消费一文中,当我们从服务消费端去调用服务提供者的服务的时候,使用了 ...

  4. Spring RestTemplate中几种常见的请求方式

    关注公众号[江南一点雨],专注于 Spring Boot+微服务以及前后端分离等全栈技术,定期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的 Java 干货! 在Spring Cloud ...

  5. Spring RestTemplate中几种常见的请求方式GET请求 POST请求 PUT请求 DELETE请求

    Spring RestTemplate中几种常见的请求方式 原文地址: https://blog.csdn.net/u012702547/article/details/77917939 版权声明:本 ...

  6. 小波基函数构造matlab,五种常见小波基函数及其matlab实现全解.docx

    五种常见小波基函数及其matlab实现全解 与标准的傅里叶变换相比,小波分析中使用到的小波函数具有不唯一性,即小波函数 具有多样性.小波分析在工程应用中,一个十分重要的问题就是最优小波基的选择问题,因 ...

  7. java简述常见的布局极其特点_请简要说明 Android 中五种常见布局的特点。_学小易找答案...

    [简答题]请简要说明有序广播和无序广播的区别 [简答题]请简要说明 Android 程序结构中 AndroidManifest.xml 的功能? [简答题]简述李村站人工办理进路的作业过程. [简答题 ...

  8. 算法中七种常见的时间复杂度

    这是我的推广信息,以激励自己更好的分享自己的知识和经验!也希望看到的你能够多多支持,谢谢! 1. 滴滴云AI大师: 目前滴滴云正在大力推广自己的云计算服务,需要购买的朋友们用我的AI大师码 「2049 ...

  9. java中的排序方法_Java中8种常见的排序方法

    本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分 ...

最新文章

  1. REDIS的几个测试结果
  2. 博客园上海俱乐部第二次活动全程图片报道(多图)
  3. 马蜂窝事件背后暴露出的数据风险
  4. cpu meltdown 熔断 漏洞 突破内存独立性限制 简介
  5. java数组之binarySearch查找
  6. 优先队列如何按照pair 的第二关键字排序(对比vector按照pair第二关键字排序)
  7. 复制内存时检测到可能的io争用条件_这篇高并发服务模型大科普,内部分享时被老大表扬了...
  8. Confluence 实现公司wiki【转】
  9. Android魔法(第三弹)—— 一步步实现对折页面
  10. LeetCode——树:BST
  11. 跳一跳python刷分_【Python跳一跳刷分辅助】iPhone版_Python跳一跳刷分辅助Ios最新版下载_Python跳一跳刷分辅助v1.0.1苹果版免费下载 - 九酷苹果网...
  12. Ubuntu16.04LTS修改开机动画
  13. 【产品对比】Word开发工具Aspose.Words和Spire.Doc性能和优劣对比一览
  14. 8、TypeScript-解构赋值
  15. 我的世界java版联机不稳定_我的世界:你一定不会相信,时隔2年,网易这次真的“更新”了...
  16. funcode黄金矿工(提高篇)
  17. android 视频编辑应用,安卓视频剪辑软件推荐
  18. 江苏省计算机二级python往年卷_历年江苏省计算机二级考试真题及答案2008-2009
  19. 用Python玩转数据(一)
  20. 免费计算机论文 阅读,关于计算机的毕业论文

热门文章

  1. shell脚本—case用法
  2. S7-1200PLC通过USS通信控制V20变频器的具体方法和步骤
  3. 蓝桥杯嵌入式——第十一届蓝桥杯嵌入式国赛
  4. uniapp 实现长按复制文本功能
  5. PHPCMS_V9模板制作模板列表
  6. RK3568平台开发系列讲解(环境篇)瑞芯微原厂源码目录介绍
  7. C++挖掘程序本质(第二章C++面向对象-中)李明杰-M了个J 配套教材
  8. opencv python3 找图片色块_OpenCV中色块的检测与标注
  9. template functional
  10. 在python中数据的输出用哪个函数名_在Python中,数据的输出用哪个函数名