1.基础概念
- 虽然不知道引擎内部如何存储,但是就DBMS的行为,可以大致认为Mysql表中的数据都是字符串。因为就算是int类型的结果,也可以使用字符串操作函数;
- 处理函数的用途是处理数据,可以处理结果数据,也可以处理用作查找条件的数据;
- 处理函数的类型:
- 文本处理;
- 数值运算;
- 日期运算;
- 数据汇总;
2.文本处理函数
文本具有两种性质,线性结构、字符,因此大致函数大致可以分为三类
- 线性结构意义上的增删查改、关系运算;
- 单字符意义上的增删查改、关系运算;
- 其他;
具体有以下行为和对应函数:
- 增加;
- 删除;
- 内部子串查询;
- 内部子串查询返回位置,LOCATE;
- 变形,UPPER,LOWER,TRIM,LTRIM,RTRIM;
- 长度,LENGTH;
- 截取子串,SUBSTRING;
- 关系;
- 匹配,正则表达式、相等关系匹配;
- 喵喵喵?SOUNDEX;
3.数值处理函数
大致可分为两类:
- 数值运算,加减乘除、关系运算、开方次方、三角函数等等;
- 数据统计,平均、最大、最小、方差等;
只列举一下数据统计相关的,因为数值运算基本都熟悉又太多:
- 平均,AVG;
- 数目统计,COUNT;
(统计行的话,不忽略NULL值;统计单列的话,则忽略) - 最小最小,MAX、MIN;
- 求和,SUM;
- 标准差,STD;
- 排序(关键字,非函数),ORDER BY;
4.日期处理函数
日期一般由两:
- 日期;
- 时间;
- 星期;
- 格式,数字、英文名;
操作的实体一般有:
- 日期 + 时间,格式示例:2011-11-11 11:11:11;
- 日期,格式示例:2011-11-11;
- 时间,格式示例:11:11:11;
如果输入11-1-1或11.1.1(隔着特殊符号就成),mysql会内部转码成正确格式2011-01-01,但是不能转
还是可以套得上增删查改、关系运算。
日期处理函数:
- 加减,ADDDATE、SUBDATE、ADDTIME、SUBTIME。ADDDATE既可以增加日期,也能增加时间,而ADDTIME只能增加时间;
- 格式转换,
- 调用DATE、TIME、ADDDATE、SUBDATE这些函数时,都会先进行可识别到的标准化格式转换;
- 可调用DATE_FORMAT、TIME_FORMAT等对输出格式进行限定,包括连接符改为‘-’外的字符;
- 可调用STR_TO_DATE等对输入格式进行限定;
- 类似字符串的位置查询,例如DAYOFMONTH、DAYOFYEAR、DAYOFWEEK这些函数;
- 获取当前日期+时间、日期、时间,NOW、CURTIME、CURDATE;