MySQL 时间日期函数,流程控制函数,加密解密函数以及聚合查询函数

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL 时间日期函数,流程控制函数,加密解密函数以及聚合查询函数

注:本文仅作为查找函数和部分理解使用,希望能给大家带来帮助

以下函数均可以使用

SELECT NOW()等函数 FROM DUAL;来测试
//其中dual是一个准们用来测试的测试表

1.时间日期函数

1.1 获取时间的函数

重点记忆前三个红色标注的函数,

第一个函数返回值如2024-01-02的形式

第二个如 15:20:21

第三个则是两者追加 如: 2024-01-02 15:20:21

1.2 年月日时分秒季度星期等函数

注:注意DAYOFWEEK WEEKDAY的区别

1.3 日期与时间戳之间的转换函数(重点)

1.4 日期的操作函数以及操作表

相当于取date的某个单独的字段

1.5 时间与秒钟转换函数

1.6 计算时间与日期函数

加减时间

1.7 日期时间的格式化和解析

getformat的参数

比如 getformat(DATE,USA);

流程控制函数

类似于其他变成语言中的 if else   /  switch case

第一个函数类似于三目表达式,是就返回第一个,不是就返回第二个

case when

可以当成if else 还是 switch case 就看case和when之间有没有变量存在,如果有,当做switch case处理,否则当做 if else 处理

小疑问:循环语句???

其实select遍历表就自带循环语句了(暂时这么解释)

加密解密函数

红色框标记的三个函数在mysql5.7版本可以使用,其实我们在配置8.0环境的时候就会发现不能使用简单的密码了,其实就是因为加密方式使用的是一个sha加密算法

 

聚合查询函数

这里介绍五个常用的聚合函数

这里count(1) 和 count(*) 也可以表示表中的字段条数

注:这里的count(字段)不会计算空字段

小问题:这里count(字段) , count(1) count(*) 哪个的效率更高呢??

取决于使用的存储引擎在MyISAM中使用 count(*) ,count(1),count(字段)的效率是相当的

但是使用InnoDB的话,count(1) 和 count(*) 的效率是高于count(字段)的

group by 的使用

用于分组使用,一般是配合聚合函数来操作的

eg:将公司按照部门来分组,查询每个部门的最大/平均工资....

注:select中的非聚合函数的参数一定要在group by中出现作为分组项

例:假设我想把每个部门每个工种的最大工资统计出来,假设这里我们有两个部门,每个部门都有5个工种,理应出现十条数据,但是如果我们只按照两个部门分组就只会出现2条数据,这是不合理的.

with rollup

在分完组之后可以加一条记录,算出总和

注:使用with rollup之后就不可以使用 order by 了,两者相互冲突

having

和where一样作为筛选条件,但是是在分完组之后进行筛选

having 和 where的对比

1.having的使用范围更广,甚至可以将过滤条件通通交给having

2.过滤条件中如果没有聚合函数,使用where的效率要高于having,因为where是先筛选再连接

having 是链接完了再筛选

SQL底层执行原理

首先我们先谈谈SQL的执行逻辑顺序

都是按照如上顺序来操作的,先读取表,连接表,进行where筛选,分组,having筛选,最后是排序,分页等等  这也就说明了为啥用where先过滤一波效率要更高

相关文章
|
6天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:优化复杂查询,使用临时表简化数据库查询流程(13)
轻松入门MySQL:优化复杂查询,使用临时表简化数据库查询流程(13)
|
6天前
|
Java 数据安全/隐私保护
java实现加密电话号码,有具体的加密流程注释
java实现加密电话号码,有具体的加密流程注释
38 0
|
5天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(下)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
43 0
|
5天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(上)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
47 0
|
1天前
|
安全 算法 网络安全
HTTPS 的加密流程
HTTPS (Hyper Text Transfer Protocol Secure) 是基于 HTTP 协议之上的安全协议,用于在客户端和服务器之间通过互联网传输数据的加密和身份验证。它使用 SSL/TLS (Secure Sockets Layer/Transport Layer Security) 协议来保护数据的安全性,可以防止数据被窃听、篡改或伪造。
19 3
|
5天前
|
前端开发 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
37 0
|
6天前
|
存储 缓存 关系型数据库
MySQL结构流程,看这一篇就够了!
MySQL结构流程,看这一篇就够了!
|
6天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
6天前
|
存储 关系型数据库 MySQL
MySQL 格式化日期函数 DATE_FORMAT(), FROM_UNIXTIME() 和 UNIX_TIMESTAMP() 之间区别
MySQL 格式化日期函数 DATE_FORMAT(), FROM_UNIXTIME() 和 UNIX_TIMESTAMP() 之间区别
|
6天前
|
SQL 关系型数据库 MySQL
【MySQL】慢SQL分析流程
【4月更文挑战第1天】【MySQL】慢SQL分析流程