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

おすすめ

転載: blog.csdn.net/qq_45438019/article/details/119936918
おすすめ