1单行函数的介绍
length 查看字符串占用字节的长度
select LENGTH(‘李’)##
image.png
select LENGTH(name) from city ORDER BY LENGTH(name) desc LIMIT 1,10 ##判断name列的所有数据的长度。
comcat () ## 拼接字符函数 ()里面是字符串
select concat (user,’@’,host) from mysql.user
lxs@localhost ##查询结果# @符号是自己拼接出来的正常是分为两列进行显示。
##查的列名称不需要加引号,自己需要添加的字符需要使用引号
lxs@localhost
upeer & lower 大小写转换,这里不详细说明。
select SUBSTR(‘abcadc’,4,3) ## 截取字符串的函数 SUBSTR 从第四个开始,取几位 以上示例是从第四个开始,取三个字符,第四个本身也算一个字符如果是 4,1就是a 4,2就是ad 以此类推。
#instr ##判断表中有没有某个值
select id,INSTR(name,’qingdao’) as a from world.city where CountryCode=’chn’ HAVING a > 0 ## 查询 world库city表中 是否有青岛这个数据。
作用: 掐头去尾。
案例:
select TRIM(‘ 张翠山 ‘) AS test;
select TRIM(‘a’ from ‘aaaaa张翠山aaaa’) AS test; ## 去除a这个字符 查询出来的结果就是 张翠山
select TRIM ‘b’ from (TRIM(‘a’ from ‘bbbaaaaa张翠山aaaabb’)) AS test; ## 如果要优化多中国字符,需要嵌套多次,功能鸡肋。
lpad
作用: 左填充 在张柏芝左面填充10个星号
案例:
select LPAD(‘张柏芝’,10,’‘) AS test;
作用:右填充
案例:
select RPAD(‘张柏芝’,10,’
‘) AS test;
REPLACE
作用:替换
# 案例: 张柏芝替换为王菲 原始数据,替换值,替换成
select REPLACE(‘谢霆锋*张柏芝’,’张柏芝’,’王菲’) as test;
#例子: 替换-为空
select replace(uuid(),’-‘,’’) as uuid;

2,数学函数

round
作用: 四舍五入
案例:
select ROUND(3.1415);
select ROUND(3.1415,3);
ceil
作用:向上取 >= 最小整
案例:
select CEIL(3.14); 4
select CEIL(3.00); 3
select CEIL(-3.14); 3
flfloor
作用:向下<= 最大取整
案例:
select floor(9.99)
select FLOOR(9.00)
truncate
作用: 小数点保留截断
案例:
select TRUNCATE(-3.15,1);
mod
作用: 取模
算法:
方法一:
mod(a,b) —-> a-a/bb
方法二:
被除数为正为正,被除数为负为负
案例:
select MOD(10,3)
select MOD(10,-3)
select MOD(-10,3)
select MOD(-10,-3)
rand
select floor(rand()
10)+1;
作用: 生成某个范围内的随机整数
例子: 略。
# 需求从以下生成的字符串中,随机截取连续6个字符。
select replace(uuid(),’-‘,’’) as uuid;
select substr(replace(uuid(),’-‘,’’) ,1+floor(rand()28),10) as ps
# 生成一个第一字母为大写,复杂度为(大写字母、小写字母、数字组合)的12位密码
mysql> select
concat(substr(‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’,1+floor(rand()
26),1),substr(replace(
uuid(),”-“,””),1+floor(rand()21),11));
日期函数
select NOW(); ##当前时间 年月日时分秒
select CURDATE(); ## 当前日期
select CURTIME(); ##当前时间
select current_timestamp(); ##时分秒
select MONTH(NOW()); ## 显示当前月份
select MONTHNAME(NOW()); ##英文月份
select DAY(NOW()); ##当前月份天
select HOUR(NOW()); ##当前月份时
select MINUTE(NOW()); ##分
select SECOND(NOW()); # 秒
案例:使用当前时间 year是年份,减去指定月份求出年龄周岁
select (year(NOW())-year(‘1992-02-14 06:01:30’));
以指定格式识别日期
select STR_TO_DATE()
例子:
select STR_TO_DATE(‘5-3 2020’,’%m-%d %Y’) as test;
image.png
3其他函数
version()
database()
user()
uuid()
BENCHMARK(count,expr)
4流程控制函数
select if(2>1,’yes’,’no’)
案例:
select user,if(user=’root’,”管理员”,”普通用户”) from mysql.user
*5case函数

用法1: 等值判断
case 表达式
when 等值判断 then 值1

else 值N。
end
select
case num
when 110 then CONCAT(num,’:抓小偷’)
when 119 then CONCAT(num,’:救火’)
else CONCAT(num,’:救人’)
end
as test
from tt;
用法2:范围判断
case
when 条件1 then 结果或语句
when 条件2 then 结果或语句
else
end
# 案例:
统计每门课程:优秀(85分以上),良好(70-85),一般(60-70),不及格(小于60)的学生列表(case)
select course.cname,
group_concat(case when ifnull(sc.score,0)>=85 then student.sname end) as ‘优秀’,
group_concat(case when ifnull(sc.score,0) between 70 and 85 then student.sname
end ) as ‘良好’,
group_concat(case when ifnull(sc.score,0) between 60 and 70 then student.sname
end) as ‘一般’,
group_concat(case when ifnull(sc.score,0)< 60 then student.sname end) as ‘不及格’
from student
join sc
on sc.sno=student.sno
join course
on course.cno=sc.cno
group by course.cno;
课程 优秀 良好 一般 不及格
语文 zs,ls w5 m6 ss

6系统变量
session 会话级别只影响当前会话, global 全局生效不包括当前的会话
show variables 是查看会话级别的变量 。
show global variables 是查看全局的系统变量。
set session read_only=1 ##会提示你,这个参数只能在全局进行设置。
在session 级别设置的参数,当你退出当前窗口,就会试下,在global 全局设置的参数,只有数据库重启才会失效,要想永久生效需要写入到 my.cnf配置文件。
8.0加入了新特性,支持配置文件的持久化。不需要加入配置文件也能永久生效。
8.0持久化介绍:
set persist read_only=1; ##就可以直接持久化到磁盘了
原理:在数据目录下会生成mysqld-auto.cnf 这样一个配置文件
保存你在数据层面设置持久化的配置。