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 |
+-----------------+

分组函数注意

  1. 分组函数自动忽略null,你不需要提前对null进行处理

  2. 分组函数中count()和count(字段)有什么区别
    count (
    ): 统计所有表中的总行数(因为不可能有全为null的行)
    count(字段):表示该字段下不为null的元素总和

  3. 分组函数不能够直接使用where子句中.

分组查询(重要)

  1. 什么是分组查询
    实际生活的需要分组来对数据进行操作
    吧一个条件的数据放到一起
select......from .....group by.....
  1. 执行顺序
select
....
from
...
where
....
group by
.....
order by
.....

严格顺序不能颠倒 , 记

  1. select
  2. from
  3. where
  4. group by
  5. order
posted @   啧啧啧|(* ̄ ̄*)  阅读(5)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示