MySQL函数

MySQL函数

字符函数

length字节个数
select length('john');
concat拼接字符串
select concat('I',' ','like',' ','mysql');
-- concat_ws可以指定分隔符进行拼接,第一个字符为所指定的分隔符
select concat_ws(' ','I','like','mysql');

-- 两这结果都是I like mysql
group_concat创建分隔列表
-- GROUP_CONCAT负责将item_id拼接起来,是一个聚合函数,所以需要使用group by
-- 结果是根据app_id分组,将app_id下的所有item_id使用逗号分隔开全部展示出来
select app_id,GROUP_CONCAT(item_id separator ','as item_ids from app_video 
group by app_id
upper/lower大小写转换
select upper('mysql');
select lower('MySQL');
substr/substring字符串截取
#从第几个字符开始截取,注意:索引从1开始
select substr('I like MySQL',8);
#从第几个字符开始截取,截取几个字符
select substr('I like MySQL',8,2);
substring_index字符拆分
-- 第一个参数str  要处理的字符串
-- 第二个参数delim  分割符
-- 第三个参数count  计数 如果为正数,则从左开始数,如果为负数,则从右开始数
select substring_index('aaa:bbb:2',':',1); -- aaa
select substring_index('aaa:bbb:2',':',2); -- aaa:bbb
select substring_index('aaa:bbb:2',':',-1); -- 2
select substring_index('aaa:bbb:2',':',-2); -- bbb:2
instr子串在字符串中的起始索引
select instr('I like MySQL','MySQL');
trim去掉前后空格
select trim(' My SQL ');
-- ltrim 表示去除前面空格 
-- rtrim 表示去除后面空格
lpad用指定字符进行左填充达到指定长度
select lpad('MySQL',8,'*');
rpad用指定字符进行右填充达到指定长度
select rpad('MySQL',8,'*');
replace替换
select replace('aabb','bb','cc');
left字符串前几个字符
-- qw
select left('qwer',2)
right字符串后几个字符
-- er
select right('qwer',2)
reverse反转
-- rewq
select reverse('qwer')
coalesce返回非null值

coalesce函数可以指定一个或多个参数,会返回参数列表中第一个非null值

select coalesce(imagesJson,"aa"from doc where imagesJson is null

数学函数

avg平均值
select avg(sal) as avg_sal from emp
max最大值
select max(sal) as max_sal from emp
min最小值
select min(sal) as min_sal from emp
sum求和
select sum(sal) as sum_sal from emp
abs绝对值
select abs(-10);
round四舍五入
select round(1.4);
#小数点后保留几位
select round(1.567,2);
ceil向上取整
select ceil(1.2);
floor向下取整
select floor(1.2);
truncate截断(小数点后保留几位)
select truncate(1.61,2);
mod取模
select mod(10,3);

format数字格式化

-- 保留一位小数
select format(123.21,1);

日期函数

获取当前时间戳毫秒
select unix_timestamp(now())*1000;
now返回当前系统时间
select now();
curdate返回当前系统日期,不包含时间
select curdate();
curtime返回当前系统时间
select curtime();
获取指定的部分
select year('2020-10-10');
select month('2020-10-10');
date_add添加或减少时间
-- 减五天
select date_add(hiredate,interval -5 dayfrom emp
-- 加五天
select date_add(hiredate,interval 5 dayfrom emp

-- 减五年
select date_add(hiredate,interval -5 yearfrom emp
-- 加五年
select date_add(hiredate,interval 5 yearfrom emp
str_to_date 将日期格式的字符转换成指定格式的日期
select str_to_date('2020年10月12','%Y年%m月%d');
date_format将日期转换为字符
select date_format('2020/10/12','%Y-%m-%d');
毫秒时间戳转为正常时间
select FROM_UNIXTIME(1387189325000/1000);
获取当天0点
SELECT DATE_FORMAT(CURDATE(),'%Y-%m-%d %H:%i:%s');-- 2015-09-28 00:00:00

聚合函数

聚合函数有sum()求和、avg()平均值、max()最大值、min()最小值、count()数量等

加密算法

md5()使用MD5加密算法

 select md5(123);
+----------------------------------+
| md5(123)                         |
+----------------------------------+
| 202cb962ac59075b964b07152d234b70 |
+----------------------------------+

password()使用密码算法

select password(123);
+-------------------------------------------+
| password(123)                             |
+-------------------------------------------+
| *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+-------------------------------------------+

流程控制

流程控制结构分为顺序结构、分支结构、循环结构

顺序结构

从上往下依次执行

分支结构

从两条或多条分支选择一条执行

if函数 if-else效果
#语法 if(表达式1,表达式2,表达式3)  表达式1成立,则执行表达式2,否则执行表达式3
select if(6<3,'小于','大于');
case函数
相当于switch-case
#语法
case 表达式|变量|字段
  when 要判断的值  then 结果
  when 要判断的值  then 结果
  ...
  else result
end
相当于多重if语句
#语法
case
  when 要判断的条件  then 结果
  when 要判断的条件  then 结果
  ...
  else result
end
if结构
#语法
if 条件1 then 语句1;
elseif 条件2 then 语句2;
else 语句;
end if;
循环结构

在满足一定的条件下,重复执行一段代码

循环控制

  • iterate 类似于continue
  • leave 类似于break
while结构
【标签:】while 循环条件 do
	循环体
end while 【标签】;
loop结构
【标签:】loop
	循环体
end loop 【标签】;
repeat结构
【标签:】 repeat 
	循环体
until 捷顺循环的条件
end repeat 【标签】;

聚合函数

sum求和
select sum(salary) from employees;
avg平均值
select avg(salary) from employees;
max最大值
select max(salary) from employees;
min最小值
select min(salary) from employees;
count个数
select count(id) from users;

count(*)对行的数目进行计算,包含NULL count(column)对特定的列的值具有的行数进行计算,不包含NULL值。 count(1)这个用法和count(*)的结果是一样的

使用count(*)即可

如果表没有主键,那么count(1)比count(*)快 如果有主键,那么count(主键,联合主键)比count(*)快 如果表只有一个字段,count(*)最快 count(1)跟count(主键)一样,只扫描主键。count(*)跟count(非主键)一样,扫描整个表。明显前者更快一些

https://zhhll.icu/2020/数据库/关系型数据库/MySQL/基础/10.MySQL函数/

本文由 mdnice 多平台发布

你可能感兴趣的:(MySQL,程序人生)