MySQL中内置函数无外乎就那么几类,共分为字符函数、数值函数、比较函数、流程控制函数、日期函数、聚合函数及信息函数七大类。字符函数是最常用的一种函数,在一个具体应用中通常会综合几个甚至几类函数来实现字符串处理。在字符函数中最常用的有两种CONCAT和REPLACE,CONCAT将多个字符串连接成一个字符串,REPLACE替换字符串。
数值型函数主要是对数值型数据进行处理,对前端客户录入数据进行反编译等,得到我们想要的结果,其中最为常用的包含GREATEST、RAND,GREATEST返回集合中最大的值,RAND生成随机数。
比较函数是对数据进行筛选时所使用的常用函数,其中最为常用的有BETWEEN...AND...筛选字段参数为某两个区间的数据,IN筛选出在列出值范围内的数据,NULL进行NULL判断。
流程控制类函数可以进行条件操作,用来实现SQL的条件逻辑,允许开发者将一些应用程序业务逻辑转换到数据库后台,最为常用的函数IFNULL如果arg1不是空,返回arg1,否则返回arg2,CASE WHEN对数据进行判断,样例SELECT CASE WHEN 1>0 THEN 'TRUE' ELSE 'FALSE' END,当1>0时结果为TRUE反之为FASLE。
MySQL对于日期的处理方式相对来讲还是较为全面的,内置了很多有关日期的处理的函数,例如DAY、MONTH、YEAR等。其中较为常用的NOW()获取当前系统年月日时间,还有获取当前年、月、日、季度函数等。DATE_ADD根据日期进行相加,DATEDIFF两个日期进行相减,DATE_FORMAT将时间转换成字符串等。
聚合函数又称组函数,一般情况下,我们需要的聚合数据(总和、平均数、最大值、最小值)等并不总是存储在表中,但是我们可以通过执行聚合函数来获取它。COUNT用来统计数量,SUM对数据进行汇总求和,AVG用来求平均值,GROUP_CONCAT将分组的数据进行展示,该函数返回带有来自一个组的连接的非NULL 值的字符串结果。
信息函数主要是对系统信息进行查看例如获取数据库版本号信息、连接ID、获取当前数据库、最后插入记录的ID及当前的用户信息进行查看。其中较为常用的VERSION、DATABASE、USER等。
查询技巧:MySQL查询技巧主要是对Select语句进行优化。
1. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2. 不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。
3. 索引并不是越多越好,索引固然可 以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。
4. 任何地方都不要使用 select * from t ,用具体的字段列表代替*,不要返回用不到的任何字段。
5. 避免频繁创建和删除临时表,以减少系统表资源的消耗。
6. 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。
7. 应尽量避免在 where 子句中使用!=或<>操作符,否则引擎将放弃使用索引而进行全表扫描。
8. in和 not in 也要慎用,否则会导致全表扫描。
以上是个人平日总结的,可以进行参考,很多东西还是要在实际的项目中多使用,积累经验,熟能生巧。
数通畅联 专注于企业IT架构、SOA综合集成、数据治理分析领域,感谢您的阅读与关注!