数据库之函数篇(0620)

数据库之函数篇(0620)

  • 函数定义

    • 函数是指一段可以直接被另一段程序调用的程序或代码。
      在这里插入图片描述

1、字符串函数

  • 字符串函数列表
函数功能
concat(s1,s2,s3,…sn)字符串拼接,将s1,s2,s3,…,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个长度的字符串
  • 使用方法

    select 函数(参数);

  • 例子:

-- 字符串拼接
SELECT concat('Hello ','mysql');

-- 转为小写
 select lower('Hello');

-- 转为大写
 select upper('Hello');

-- 左填充
 select lpad('02d',9,'*');

-- 右填充
 SELECT rpad('0o',9,'111');

-- 去掉字符串头部和尾部的空格
 select trim('      hello   world! ');

-- 截取字符串
 SELECT substring('cbd isvodnd',2,5);

2、数值函数

函数功能
ceil(x)向上取整
floor(x)向下取整
mod(x,y)返回 x/y 的模(即 x/y 的余数)
rand()返回0~1(包含0,但不包含1)的随机数
round(x,y)求参数x的四舍五入的值,保留 y 位小数

3、日期函数

函数功能
curdate()返回当前日期
curtime()返回当前时间
now()返回当前日期和时间
year(date)返回指定date的年份
month(date)返回指定date的月份
day(date)返回指定date的日期
date_add(date,interval expr type)返回一个日期/时间值加上一个时间间隔expr后的时间值
datediff(date1,date2)返回起始时间date1和结束时间date2之间的天数
  • 例子
-- 返回当前日期
SELECT curdate();

-- 返回当前时间
select curtime();

-- 返回当天时间
select now();

-- 返回指定 date 的年份
select year(now());

-- 返回指定 date 的月份
select month(now());

-- 返回指定 date 的日期
select day(now());

-- 返回一个时间/日期值加上一个时间间隔expr后 的时间值
select date_add('2021-10-17',interval 20 month);

-- 返回起始时间date1和结束时间date2之间的天数
select datediff('2024-03-25','2021-06-06');

-- 查询所有员工的入职天数,并根据入职天数倒序排序
select *, DATEDIFF(curdate(),entrydate) as entryDays from tb_emp ORDER BY  entryDays desc;

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 [defalut] end如果expr的值为val1,返回res1,否则返回default 默认值
-- 查询所有员工的入职天数,并根据入职天数倒序排序
select *, DATEDIFF(curdate(),entrydate) as entryDays from tb_emp ORDER BY  entryDays desc;

-- if(value,t,f);
SELECT if(false,12,'cndj');

-- ifnull(value1,value2) 只要value1不是null都返回value1
SELECT ifnull(null,'cnds'); 

将表中的工作地址为 北京 、上海的标志为一线城市,其他标志为二线城市
select  worker_name,(case workaddress when  '北京' then '一线城市'    when   '上海'  then '一线城市'  else  '二线城市' end ) as '工作地址' from tb_emp;
  • 练习
  • 根据需求完成以下SQL编写统计班级各个学员的成绩,展示的规则如下:
    • 大于等于85,展示优秀
    • 大宇等于60,展示及格否则
    • 否则展示不及格
select worker_name,(case  when  age >= 40 then '中年' when age between 18 and 39 then '青年' else '未成年' end ) as '年龄' from tb_emp;

5、小结
在这里插入图片描述
这是本人的黑马课堂学习笔记,如有侵权,请联系删除哟!!!
黑马课程链接如下:
黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括
https://www.bilibili.com/video/BV1Kr4y1i7ru?p=107&vd_source=4c23446fa14af53c8888fb87ce4acb4c

如有错误,请大家评论区留言哟!!!

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尸僵打怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值