字符函数

length 取字节长度

select length(‘姓名’) from 员工表

concat 拼接字符串

select concat('姓','名') from 员工表

upper/lower 更改字符大小写

select upper('abc')

substr/substring 索引取字符串

select substr('阿珍爱上了阿强',1,2);
取值阿珍
第一个参数为索取起始位置,第二个参数为起始位置后面多少位
上述参数即为,从第一个字符开始的后面两位截取出来。

trim 去字符

select trim('a'fromm 'aaaaaaa张三aaaaaaaaa');
去掉所有的a

lpad/rpad 指定字符填充到字符左/右边

select lpad('字符传',填充的字符数,'填充的字符内容')

replace替换

select replace('等待替换的字符串','要替换的内容' ,'取代值');
例如:
select replace('阿珍爱上了阿强,'阿强','胖虎');
将阿强替换成了胖虎。


数学函数

round 四舍五入

select round(3.21);
结果即为4

ceil/floor 向上/下取整

select cell(3.002);
结果为4

truncate 截断小数

select truncate(89.2341, 2);去小数点后两位
结果为89.23


日期函数

now 返回当前系统时间

select now()去当前的时间和日期
select curdate();取当前日期
select curtime();去当前时间
year month day hour minute second
年月日
select day (now());

字符串日期转换

str_to_date 将字符日期转换日期格式

str_to_date('2012-3-20','%Y-%m-%d');

date_format 将日期转换成字符串

date_format('2019/6/6','%Y年%c%月%d日');
将日期转换成2019年6月6日的字符串格式

日期字符表:

格式符 意义
%Y 4位年份
%y 2位年份
%m 2位月份:01,02..
%c 1位月份:1,2,3
%d 日:01,02
%H 小时(24小时制
%h 小时(12小时制)
%i 分钟
%s

流程控制函数

if函数

  • 语法
    select if(判断条件,满足执行块,不满足执行块);
    例如:
    select if(1>2, '对','错');结果执行的是’错’

case 函数

  • 语法1
  1. case 判断语句
  2. when 常量1 then 要显示的值1或语句1
  3. when 常量2 then 药显示的值2或语句2;
  4. ...
  5. else 要显示的值或语句
  6. end
  • 语法2
case
when 条件1 then 值1或语句1
when 条件2 then 值2或语句2
else 值n或语句n
end

示例1

  • 需求:查询员工的工资,要求:
    部门号为30的,显示的工资为1.1倍
    部门号为40的,显示的工资为1.2倍
    部门号为50的,显示的工资为1.3倍
    其他的部门显示原工资
select 工资,部门ID,
case 部门ID
when 30 then 工资*1.1
when 40 then 工资*1.2
when 50 then 工资*1.3
else 工资
end
from 工资表;

示例2

  • 需求
    如果工资>2W,显示A级别
    如果工资>1.5W ,显示B级别
    如果工资>1W, C
    否则 D

代码如下:

select 工资,
case 
when 工资>20000 then 'A'
when 工资>15000 then 'B'
when 工资>10000 then 'C'
else 'D'
end as 工资定级
from 工资表

计算函数

  1. 求和sum
  2. 平均值avg
  3. 最大值max
  4. 最小值min
  5. 计算个数(非空)count
  • 特点
  1. sum avg 一般用与数值
  2. max min conut 可以用于所有值
  3. 所有函数忽略null值
  4. 可以搭配distinct去重
  • 简单示例:
    select sum(工资),avg(工资),max(工资),min(工资),count(工资) from 员工表
  • 搭配distinct去重
    select sum(distinct(部门))计算有多少部门
  • 统计数据表有多少行数据
    select conut(*) from 员工表
  • 查询员工表中最大入职时间和最小输入事件的相差天数
    select datediff(max(入职时间) ,min(入职时间));
    datediff函数用来计算时间差,第一个参数减去第二个参数。
  • 查询制造部员工个数
    select conut(*) as 个数 from 员工表 where 部门 = '制造部';