MySQL函数 字符函数 length字节个数
concat拼接字符串 1 2 3 4 5 select concat('I',' ','like',' ','mysql'); -- concat_ws可以指定分隔符进行拼接,第一个字符为所指定的分隔符 select concat_ws(' ','I','like','mysql'); -- 两这结果都是I like mysql
group_concat创建分隔列表 1 2 3 4 select app_id,GROUP_CONCAT (item_id separator ',' ) as item_ids from app_video group by app_id
upper/lower大小写转换 1 2 select upper('mysql'); select lower('MySQL');
substr/substring字符串截取 1 2 3 4 #从第几个字符开始截取,注意:索引从1开始 select substr('I like MySQL',8); #从第几个字符开始截取,截取几个字符 select substr('I like MySQL',8,2);
substring_index字符拆分 1 2 3 4 5 6 7 select substring_index('aaa:bbb:2' ,':' ,1 ); select substring_index('aaa:bbb:2' ,':' ,2 ); select substring_index('aaa:bbb:2' ,':' ,-1 ); select substring_index('aaa:bbb:2' ,':' ,-2 );
instr子串在字符串中的起始索引 1 select instr('I like MySQL','MySQL');
trim去掉前后空格 1 2 3 select trim(' My SQL '); -- ltrim 表示去除前面空格 -- rtrim 表示去除后面空格
lpad用指定字符进行左填充达到指定长度 1 select lpad('MySQL',8,'*');
rpad用指定字符进行右填充达到指定长度 1 select rpad('MySQL',8,'*');
replace替换 1 select replace('aabb','bb','cc');
left字符串前几个字符
right字符串后几个字符
reverse反转
coalesce返回非null值 coalesce函数可以指定一个或多个参数,会返回参数列表中第一个非null值
1 select coalesce (imagesJson,"aa" ) from doc where imagesJson is null
数学函数 avg平均值 1 select avg (sal) as avg_sal from emp
max最大值 1 select max (sal) as max_sal from emp
min最小值 1 select min (sal) as min_sal from emp
sum求和 1 select sum (sal) as sum_sal from emp
abs绝对值
round四舍五入 1 2 3 select round(1.4); #小数点后保留几位 select round(1.567,2);
ceil向上取整
floor向下取整
truncate截断(小数点后保留几位) 1 select truncate(1.61,2);
mod取模
format数字格式化
1 2 select format (123.21 ,1 );
日期函数 获取当前时间戳毫秒 1 select unix_timestamp (now ())*1000 ;
now返回当前系统时间
curdate返回当前系统日期,不包含时间
curtime返回当前系统时间
获取指定的部分 1 2 select year('2020-10-10'); select month('2020-10-10');
date_add添加或减少时间 1 2 3 4 5 6 7 8 9 select date_add (hiredate,interval -5 day ) from empselect date_add (hiredate,interval 5 day ) from empselect date_add (hiredate,interval -5 year ) from empselect date_add (hiredate,interval 5 year ) from emp
str_to_date 将日期格式的字符转换成指定格式的日期 1 select str_to_date('2020年10月12','%Y年%m月%d');
1 select date_format('2020/10/12','%Y-%m-%d');
毫秒时间戳转为正常时间 1 select FROM_UNIXTIME(1387189325000 /1000 );
获取当天0点 1 SELECT DATE_FORMAT (CURDATE (),'%Y-%m-%d %H:%i:%s' );
聚合函数 聚合函数有sum()求和、avg()平均值、max()最大值、min()最小值、count()数量等
加密算法 md5()使用MD5加密算法
1 2 3 4 5 6 select md5 (123 ); + | md5(123) | + | 202cb962ac59075b964b07152d234b70 | +
password()使用密码算法
1 2 3 4 5 6 select password (123 );+ | password(123) | + | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | +
流程控制 流程控制结构分为顺序结构、分支结构、循环结构
顺序结构 从上往下依次执行
分支结构 从两条或多条分支选择一条执行
if函数 if-else效果 1 2 #语法 if(表达式1,表达式2,表达式3) 表达式1成立,则执行表达式2,否则执行表达式3 select if(6<3,'小于','大于');
case函数 相当于switch-case 1 2 3 4 5 6 7 #语法 case 表达式|变量|字段 when 要判断的值 then 结果 when 要判断的值 then 结果 ... else result end
相当于多重if语句 1 2 3 4 5 6 7 #语法 case when 要判断的条件 then 结果 when 要判断的条件 then 结果 ... else result end
if结构 1 2 3 4 5 #语法 if 条件1 then 语句1; elseif 条件2 then 语句2; else 语句; end if;
循环结构 在满足一定的条件下,重复执行一段代码
循环控制
iterate 类似于continue
leave 类似于break
while结构 1 2 3 【标签:】while 循环条件 do 循环体 end while 【标签】;
loop结构 1 2 3 【标签:】loop 循环体 end loop 【标签】;
repeat结构 1 2 3 4 【标签:】 repeat 循环体 until 捷顺循环的条件 end repeat 【标签】;
聚合函数 sum求和 1 select sum(salary) from employees;
avg平均值 1 select avg(salary) from employees;
max最大值 1 select max(salary) from employees;
min最小值 1 select min(salary) from employees;
count个数 1 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(非主键)
一样,扫描整个表。明显前者更快一些