• 【MySQL数据库】(三)函数


    ✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
    📚专栏地址:https://blog.csdn.net/Newin2020/article/details/127933422
    📝视频地址:黑马程序员 MySQL数据库入门到精通
    📣专栏定位:这个专栏我将会整理 B 站黑马程序员的 MySQL 入门课程的笔记,大家可以根据笔记辅助听课~
    ❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

    三、函数

    函数是指一段可以直接被另一段程序调用的程序或代码。

    1. 字符串函数

    MySQL 中内置了很多字符串函数,常用的几个如下:

    函数功能
    CONCAT(S1,S2,…,Sn)字符串拼接,将 S1,S2,…,Sn 拼接成一个字符串
    LOWER(str)将字符串 str 全部转为小写
    UPPER(str)将字符串 str 全部转为大写
    LPAD(str,n,pad)左填充,用字符串 pad 对 str 的左边进行填充,达到 n 个字符串长度
    RPAD(str,n,pad)右填充,用字符串 pad 对 str 的右边进行填充,达到 n 个字符串长度
    TRIM(str)去掉字符串头部和尾部的空格
    SUBSTRING(str,start,len)返回从字符串 str 从 start 位置起的 len 个长度的字符串(从1开始)
    SELECT 函数(参数);
    
    • 1

    案例:

    由于业务需求变更,企业员工的工号,统一为 5 位数,目前不足 5 位数的全部在前面补 0 。比如:1 号员工的工号应该为 00001

    update emp set workno = lpad(workno,5,'0');
    
    • 1

    2. 数值函数

    函数功能
    CEIL(x)向上取整
    FLOOR(x)向下取整
    MOD(x,y)返回 x/y 的模
    RAND()返回 0~1 内的随机数
    ROUND(x,y)求参数 x 的四舍五入的值,保留 y 位小数

    案例:

    通过数据库的函数,生成一个六位数的随机验证码。

    select lpad(round(rand()*1000000, 0), 6, '0');
    
    • 1

    3. 日期函数

    常见的日期函数如下:

    函数功能
    CURDATE()返回当前日期
    CURTIME()返回当前时间
    NOW()返回当前日期和时间
    YEAR(date)获取指定 date 的年份
    MONTH(date)获取指定 date 的月份
    DAY(date)获取指定 date 的日期4
    DATE_ADD(date, INTERVAL expr type)返回一个日期/时间值加上一个时间间隔 expr 后的时间值
    DATEDIFF(date1, date2)返回起始时间 date1 和结束时间 date2 之间的天数

    案例:

    查询所有员工的入职天数,并根据入职天数倒序排序。

    select name, datediff(curdate(), entrydate) as 'entrydays' from emp order by entrydays desc;
    
    • 1

    4. 流程函数

    流程函数也是很常用的函数,可以在 SQL 语句中实现条件筛选,从而提高语句的效率。

    函数功能
    IF(value, t, f)如果 value 为 true ,则返回 t ,否则返回 f
    IFNULL(value1, value2)如果 value1 不为空,返回 value1 ,否则返回 value2
    CASE WHEN [ val1 ] THEN [ res1 ] … ELSE [ default ] END如果 val1 为 true ,返回 res1 , … 否则返回 default 默认值
    CASE [ expr ] WHEN [ val1 ] THEN [ res1 ] … ELSE [ default ] END如果 expr 的值等于 val1 ,返回 res1 , … 否则返回 default 默认值

    案例:

    -- 1.查询emp表的员工姓名和工作地址(北京/上海 ----> 一线城市,其他 ----> 二线城市)
    select
    	name,
    	( case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end ) as '工作地址'
    from emp;
    
    -- 2.统计班级各个学员的成绩,展示的规则如下:
    -- >= 85,展示优秀
    -- >= 60,展示及格
    -- 否则,展示不及格
    create table score(
    	id int comment 'ID',
        name varchar(20) comment '姓名',
        math int comment '数学',
        english int comment '英语',
        chinese int comment '语文'
    ) comment '学员成绩表';
    insert into score(id, name, math, english, chinese) VALUES (1,'Tom',67,85,95),(2,'Rose',23,66,90),(3,'Jack',56,98,76);
    
    select
    	id,
    	name,
    	( case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end ) '数学',
    	( case when english >= 85 then '优秀' when english >= 60 then '及格' else '不及格' end ) '英语',
    	( case when chinese >= 85 then '优秀' when chinese >= 60 then '及格' else '不及格' end ) '语文'
    from score;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
  • 相关阅读:
    JAVA计算机毕业设计在线学习管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
    一起学习ML和DL中常用的几种loss函数
    提高APP安全性的必备加固手段——深度解析代码混淆技术
    Nexus 私服上传 jar 包 Connection rest
    轻量级运维工具Commander
    『heqingchun-ubuntu系统下Qt报错connot find -lGL解决方法』
    ffmpeg在特定时间点插入素材
    【解锁未来】OpenAI:从创始到GPT4的发展
    什么是好代码/坏代码?给普通人的图解示例
    远程拷贝Windows上的文件到Linux指定的文件夹
  • 原文地址:https://blog.csdn.net/Newin2020/article/details/126530596