五、MySQL常用函数

可参考【官网文档】https://dev.mysql.com/doc/refman/8.0/en/

5-1、基本函数

数学运算:

-- 数学运算
SELECT ABS(-8) AS '绝对值' -- 取绝对值 SELECT CEILING (3.14) AS '向上取整' -- 向上取整 SELECT FLOOR (3.14) AS '向下取整' -- 向下取整 SELECT RAND() -- 返回 [0,1) 随机数 SELECT SIGN(0) -- 判断一个数的符号 0 => 0 , 负数 => -1 , 正数=> 1

字符串:

SELECT CHAR_LENGTH('hello') -- 字符串长度
SELECT CONCAT('hello','world') -- 字符串 拼接
SELECT LOWER('HELLO') -- 转小写
SELECT UPPER('hello') -- 转大写
SELECT INSTR('l') -- 返回第一次出现子串 l 的索引
SELECT REPLACE('l','a') -- 把子串 l 替换为 a
SELECT substr('helloWorld',5,2) -- 截取字符串(源字符串,起始位置,截取长度):WO
SELECT reverse('helloWorld') -- 反转字符串

时间和日期:( 记住 )

SELECT NOW() 		-- 返回当前的时间,日期+时分秒(记个最简单的就行)
SELECT LOCALTIME() -- 返回本地的时间,日期+时分秒
SELECT SYSDATE() -- 返回系统的时间,日期+时分秒 SELECT CURDATE() -- 返回当前的日期
SELECT CURRENT_DATE() -- 返回当前的日期

系统:( 记住 )

SELECT USER() -- 返回当前用户
SELECT SYSTEM_USER() -- 返回当前用户
SELECT VERSION() -- 返回当前版本号

5-2、聚合函数(常用)

函数名称 描述
count() 计数
avg() 平均值
sum() 求和
max() 最大
min() 最小

相似的 count(*) 和 count(1)比较:

  • count(1):其实就是计算一共有多少符合条件的行。1并不是表示第一个字段,而是表示一个固定值。其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1.

  • count(*):执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。

总结:count(*),count(1) 和 count(列名)

  • 如果表中存在主键,count(主键列名)效率最优

  • 如果表中只有一列,则count(*)效率最优

  • 如果表有多列,且不存在主键,则count(1)效率优于count(*)

网上的实验结论:

该Table数据量:33681874(千万级)

根据执行计划,都是走PK查询,所有时间基本相差不大,如下:

Count(1):00:00:05.13;

count(*):00:00:05.29;

Count(主键):00:00:05.07;

Count(Index):00:00:05.10;

Count(普通列):00:00:05.29;

所以对于有主键非null的Table来说,执行效率:

Count(主键) > Count(Index) > Count(1) > Count(*) = Count(普通列)

网友:

现在cout(1)和count(*) 系统会自动做优化走索引还是全表,三者性能差别不大。

5-3、MD5 加密函数

 -- MD5 明文加密
SELECT MD5(123456)

如何校验?

  • 把传入的值,加密,再和表中已经加过密的值判断。

最新文章

  1. AD域-让共享目录只显示用户有权限访问的文件夹
  2. 导出Excel
  3. WPF学习之路(十二)控件(HeaderedContent控件)
  4. [CareerCup] 18.8 Search String 搜索字符串
  5. SDUT图结构练习——最小生成树
  6. oracle数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1)
  7. zDialog无法获取未定义或 null 引用的属性“_dialogArray”
  8. 如何把select出来的一列数据放在第一个单元格
  9. 观察者模式:猫叫鼠跑人醒(C#)
  10. MySQL存储写入性能严重抖动分析
  11. ServletConfig与ServletContext对象详解
  12. poj1068 【模拟】
  13. C++ 实现sqilte创建数据库插入、更新、查询、删除
  14. 8.14 git??sourceTree??
  15. P1099 树网的核 && P2491 [SDOI2011]消防
  16. 数学图形之SineSurface与粽子曲面
  17. git-【六】分支的创建与合并
  18. 2016-2017-2 20155339 《Java面向对象程序设计》实验三敏捷开发与XP实践实验报告
  19. 自学git心得-2
  20. [原创]在Debian9上配置NAS

热门文章

  1. 【集群实战】共享存储实时备份(解决nfs共享存储的单点问题)
  2. MySQL Change Data Directory
  3. Xapian实战(一):环境搭建 + 简介
  4. caffe学习笔记(1)安装 - Ubuntu 15.04
  5. 数学--数论--HDU 5019 revenge of GCD
  6. P6474 [NOI Online #2 入门组] 荆轲刺秦王
  7. CentOS7 安装boost
  8. C/S程序设计范式
  9. 【SpringBoot 基础系列】实现一个自定义配置加载器(应用篇)
  10. GoF23:工厂模式(Factory)