是指一段可以直接使用或者被另一段程序使用的代码或程序。
例如:
公司的数据表中一般登记了员工的生日,但是更经常使用的应该是员工的年龄。
数据表中储存了学生的成绩,但是我希望能快速得到学生的成绩等级。
而想要快速实现这些目的,我们就需要一些内置函数来提高处理数据的效率。

select concat('hello','world');命令的结构是将字符'hello'与字符'world'进行拼接,结果如下:

select lower('Hello');命令的结果是将字符串全部变成小写:

select upper('Hallo');命令的结果是将字符串全部变成大写:

注意:字符串要使用引号括起来!!!
select lpad('01',6,'-');lpad函数中有三个参数,分别是字符,填充后长度,填充字符。
运行结果如下:

使用符号 - 向左填充 字符串 01 ,使得最后的字符串总长度为6。
同理也有向右填充
select rpad('01',6,'-');
select trim(' my sql ');该函数只有一个参数,但注意的是,TRIM函数只能将字符串首尾的字符删去,其中间的空格依然存在。

select substring('Hello_World!',1,5);SUBSTRING函数有三个参数,分别是字符串、索引位置、截取长度。
PS:该函数的索引位置是从1开始的 ,与分页查询有所区别


select ceil(1.1);
select ceil(1.6);
select ceil(-1.1);向上取整,运行结果分别为2、2、-1
select floor(1.1);
select floor(1.6);
select floor(-1.1);向下取整,运行结果分别为1、1、-2
select mod(5,4);
select mod(3,4);取模,运行结果分别是1、3
select rand();会随机生成一个在0到1之间的小数
select round(1.33,2);
select round(1.335,2);四舍五入,运行结果分别是1.33、1.34
实例:
随机生成一个六位数的验证码
select round( rand()*1000000,0 );函数时可以进行内套的,运行结果如下:

但是这段代码并没有完全六位数验证码的满足要求,因为有可能随机生成的数,第一位小数为零,那么这样产生的是一位五位数

所以需要进行填充操作
select lpad(round( rand()*1000000,0 ),6,0);这样就能保证一定是六位数的验证码

SELECT curdate();会显示当前系统的年月日
select curtime();显示当前系统的时间
会显示当前系统的日期+时间
select year(now());select month(now());select day(now());select date_add(now(),interval 10 day);
--从现在时间开始,经过10天后的时间三个参数分别是,起始时间,interval(固定的),时间间隔,时间单位
select datediff('2023-6-7','2025-2-28');计算两个时间的时间差,注意的是它的计算逻辑是:前者 - 后者
实例
计算所有员工的入职天数,并且按照倒序排序:
select *from users; --使用员工信息表
select name ,datediff( curdate(),entrydate ) as 'entrydays' from users order by entrydays desc;
--将用户的姓名按照入职天数倒序排序
select if(1+1=1,'ok','error');IF函数中要传入三个参数,表达式、真值时输出、假值时输出
select ifnull('hello','default');
select ifnull('','default');
select ifnull(null,'default');IFNULL是用来判断字符串是否为空,若不为空输出,若为空则将默认值输出
要注意的是,' ' (引号中什么也没有)并不是空,依然会将这个“空”输出,所以以上的运行结果为hello、空白、default
select user_name,user_address,
(case substring(user_address,1,2) when '北京' then '一线城市'
when '上海' then '一线城市'
else '二线城市' end) as '工作地址'
from users;取员工地址的前两位,如果是北京或上海,就将其工作地址输出为一线城市,否则输出为而二线地址
select case when user_address = '北京市' then '大佬' else '菜鸡' ;
于是我们就可以回答,本文一开始提的两个问题: