MYSQL 、二
数据处理函数/单行处理函数
- Lower 转换小写
- upper 转换大写
- substr 取子串(substr(被截取字符串,起始下标,截取长度))
- length 取长度
- trim 去空格
- str_to_date 将字符串转换成日期
- date_format 格式化日期
- format 设置千分位
- round 四舍五入
- rand() 生成随机数
- ifnull 可以将null转换成一个具体的值
- concat 函数进行字符串的拼接
单行处理函数的特点
特点:一个输入对应一个输出 和单行处理函数相对应的是:多行处理函数(特点:多个输入,对应一个输出!)
常见的单行处理函数
- Lower 转换小写
- lower lower lower lowerlower lower lower lower
mysql> select LOWER(CLASS_NAME) from class; +-------------------+ | LOWER(CLASS_NAME) | +-------------------+ | qy142 | | qy142 | | qy141 | +-------------------+
几个输入对应几个输出单行处理
- upper 转换大写
upper upper upper upper upper upper upper upper upper upper upper
mysql> select upper(remark) from class; +---------------+ | upper(remark) | +---------------+ | MR | | MR | | MR | +---------------+
- substr 取子串(substr(被截取字符串,起始下标,截取长度))
substr substr substr substr substr substr substrsubstr
注意:起始下标是1
mysql> select substr(remark,1,1) from class; +--------------------+ | substr(remark,1,1) | +--------------------+ | m | | m | | m | +--------------------+ substr的另一种用法 可以作为条件的判断 mysql> select class_id from class where substr(class_id,1,1)=4; +----------+ | class_id | +----------+ | 4 | +----------+
- concat 函数进行字符串的拼接
select concat(class_id,remark) from class
mysql> select concat(class_id,remark) from class; +-------------------------+ | concat(class_id,remark) | +-------------------------+ | 4mr | | 6mr | | 7mr | +-------------------------+
首字母大写
select concat(upper(substr(remark,1,1)),substr(remark,2,length(remark)-1)) as A from class; +------+ | A | +------+ | Mr | | Mr | | Mr | +------+
- length 取长度
select length(remark) from class;
mysql> select length(remark) from class -> ; +----------------+ | length(remark) | +----------------+ | 2 | | 2 | | 2 | +----------------+
- trim 去除前后空格
mysql> select * from class where remark = trim(' mr'); +----------+------------+--------+ | class_id | CLASS_NAME | remark | +----------+------------+--------+ | 4 | QY142 | mr | | 6 | QY142 | mr | | 7 | QY141 | mr | +----------+------------+--------+ 3 rows in set (0.00 sec) mysql> select * from class where remark = ' mr'; Empty set (0.00 sec)
- round 四舍五入
mysql> select round(13.5,0) as rou from class; +-----+ | rou | +-----+ | 14 | | 14 | | 14 | +-----+ 保留一个小数 mysql> select round(13.5,1) as rou from class; +------+ | rou | +------+ | 13.5 | | 13.5 | | 13.5 | +------+ mysql> select round(135.65,1) as rou from class; +-------+ | rou | +-------+ | 135.7 | | 135.7 | | 135.7 | +-------+ 保留到十位 mysql> select round(135.65,-1) as rou from class; +-----+ | rou | +-----+ | 140 | | 140 | | 140 | +-----+
select 后面可以跟某个表 的字段名(可以等同变量名),也可以跟字面量 字面值 (数据),
- rand() 生成随机数
mysql> select rand() from class; +----------------------+ | rand() | +----------------------+ | 0.48039640624113045 | | 0.008101779975091834 | | 0.5993197118857128 | +----------------------+ 100 以内的随机数 mysql> select round( rand()*100) from class; +--------------------+ | round( rand()*100) | +--------------------+ | 26 | | 40 | | 24 | +--------------------+
- ifnull 可以将null转换成一个具体的值
ifnull 是一个空处理函数,专门处理空的
在所有数据库中,只要有null参与的数学运算,最终结果就是null
注意: null参与运算,最终结果一定是null 。为了避免这个现象,需要使用ifnull函数。
ifnull函数用法: 用ifnull(数据,被当做哪个值)
如果“数据”为null 的时候,把这个数据结构当做哪个值。
case…when…then…when… then…else…end
当A是1的时候,B改变成什么什么,当A是2的时候,B改变成什么什么
(注意:不修改数据库,只是将查询结果显示改变)
分组函数 (多行处理函数)
多行处理函数的特点: 输入多行,最终输出一行
5个:
max 最大
min 最小
count 计数
sum 和
avg 平均数
注意:分组函数在使用的时候必须先进行分组,然后才能用> 如果你没有进行对数据进行分组,就默认吧整张表默认为一组
+----------+ | class_id | +----------+ | 4 | | 6 | | 7 | +----------+ mysql> select max(class_id) from class; +---------------+ | max(class_id) | +---------------+ | 7 | +---------------+ 1 row in set (0.00 sec) mysql> select min(class_id) from class; +---------------+ | min(class_id) | +---------------+ | 4 | +---------------+ 1 row in set (0.00 sec) mysql> select avg(class_id) from class; +---------------+ | avg(class_id) | +---------------+ | 5.6667 | +---------------+ 1 row in set (0.00 sec) mysql> select sum(class_id) from class; +---------------+ | sum(class_id) | +---------------+ | 17 | +---------------+ 1 row in set (0.00 sec) mysql> select count(class_id) from class; +-----------------+ | count(class_id) | +-----------------+ | 3 | +-----------------+
分组函数注意
-
分组函数自动忽略null,你不需要提前对null进行处理
-
分组函数中count()和count(字段)有什么区别
count (): 统计所有表中的总行数(因为不可能有全为null的行)
count(字段):表示该字段下不为null的元素总和 -
分组函数不能够直接使用where子句中.
分组查询(重要)
- 什么是分组查询
实际生活的需要分组来对数据进行操作
吧一个条件的数据放到一起
select......from .....group by.....
- 执行顺序
select .... from ... where .... group by ..... order by .....
严格顺序不能颠倒 , 记
- select
- from
- where
- group by
- order
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用