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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
密钥管理服务KMS,1000个密钥,100个凭据,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先过滤一波效率要更高

相关文章
|
11天前
|
SQL 前端开发 关系型数据库
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
43 9
|
13天前
|
缓存 监控 关系型数据库
如何优化MySQL查询速度?
如何优化MySQL查询速度?【10月更文挑战第31天】
40 3
|
16天前
|
关系型数据库 MySQL
Mysql 中日期比较大小的方法有哪些?
在 MySQL 中,可以通过多种方法比较日期的大小,包括使用比较运算符、NOW() 函数、DATEDIFF 函数和 DATE 函数。这些方法可以帮助你筛选出特定日期范围内的记录,确保日期格式一致以避免错误。
|
17天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
83 1
|
17天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
47 0
|
8天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
23 1
|
10天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
25 4
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
19天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
61 2
|
22天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
89 4