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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
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先过滤一波效率要更高

相关文章
|
4天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
4天前
|
SQL NoSQL 关系型数据库
|
15天前
|
关系型数据库 MySQL 数据库
mysql中tonumber函数使用要注意什么
在处理这类转换操作时,考虑周全,利用提供的高性能云服务器资源,可以进一步提升数据库处理效率,确保数据操作的稳定性和安全性,尤其是在处理大量数据转换和运算密集型应用时。
54 0
|
18天前
|
关系型数据库 MySQL 数据处理
企业级应用 mysql 日期函数变量,干货已整理
本文详细介绍了如何在MySQL8.0中使用DATE_FORMAT函数进行日期格式的转换,包括当日、昨日及不同时间段的数据获取,并提供了实际的ETL应用场景和注意事项,有助于提升数据处理的灵活性和一致性。
36 0
|
21天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
92 6
|
19天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
54 3
Mysql(4)—数据库索引
|
21天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
57 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
4天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
29 2
|
7天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
32 4
|
13天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?

推荐镜像

更多