MySQL数据库,函数与分组

单行函数:

  • 操作数据对象

  • 接受参数返回一个结果

  • 只对一行进行变换

  • 每行返回一个结果

  • 可以嵌套

  • 参数也可以是一列或一个值

数值函数

基本函数:

注:ROUND(x,y)函数的y是负数时,即往高位进行四舍五入,如-3就是按百位进行四舍五入(如ROUND(12767,-3)的结果为13000)。TRUNCATE与ROUND的区别是:

  • TRUNCATE是直接取y位小数,不进行四舍五入

  • TRUNCATE没有单参数的函数,必须传入操作数和截断的小数位 。

  • TRUNCATE(12767,-3)的结果是12000。

三角函数

由于参数要代入的是弧度值,所以经常要用到角度和弧度的运算的函数:

指数和对数:

进制间的转换:

字符串函数:

注:在MySQL中,字符串的索引是从1开始的

日期和时间函数:

获取日期时间:

日期与时间戳的转换:

获取月份、星期、星期数、天数等函数:

日期的操作函数:

时间和秒钟转换的函数

计算日期和时间的函数:

注:加减组合型类型时要用字符串,并将要组合的两个元素用_隔开。例如:

SELECT DATE_ADD(NOW(),INTERVAL '2_2' YEAR_MONTH)

FROM DUAL;

注:ADDTIME的时间也可以用'时:分:秒'表示,例如:

SELECT ADDTIME(NOW( ),'2:2:2')

FROM DUAL;

日期的格式化与解析:

格式化:日期  ——》字符串

解析:字符串  ——》日期

格式化的格式符:

流程控制函数:

流程处理函数可以根据不同的条件,执行不同的处理流程,可以在SQL语句中实现不同的条件选择。MySQL中的流程处理函数主要包括IF( )、IFNULL( )、CASE( )函数。

加密与解密函数

加密与解密函数主要用于对数据库的数据进行加密和解密处理,以防止数据被他人窃取。

注:

PASSWORD/ENCODE/DECODE函数在MySQL8.0中开始被弃用,不能再使用PASSWORD/ENCODE/DECODE函数。

MD5和SHA函数都是不可逆的。

MySQL信息函数:

MySQL中内置了一些可以查询MySQL信息的函数,这些函数主要用于帮助数据库开发或运维人员更好地对数据库进行维护工作。

其他函数:

注:

FORMAT函数中n如果小于零,不会往高位去四舍五入保留,而是保留整数部分

关于以点分割的IP地址和数字形式的IP地址:以“192.168.1.100”为例,数字形式是192乘以256的三次方,加上168乘以256的二次方,加上1乘以256的一次方,加上100乘以256的零次方。

聚合函数:

聚合函数(或聚集函数、分组函数)是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。

即作用于一组数据,并对一组数据返回一个值。

常见的几个聚合函数:

  • AVG( ):求平均值

  • SUM( ):求总和

  • MAX( ):求最大值

  • MIN( ):求最小值

  • COUNT( ):计算指定的字段在查询结果中查询的个数

注:AVG函数和SUM函数的参数只能代入数值类的数据的集合,因为非数值类的数据(比如字符串)的集合没有平均、总和的说法

MAX函数和MIN函数的参数可以代入数值类的数据的集合,也可以代入一些非数值类的数据(比如日期、字符串)的数据的集合,字符串可以按照ASCII码值按位比较的方式来比较大小。

以上函数在计算指定字段出现的个数时,都不会计算字段值为NULL的数据

GROUP BY的使用

  • 要对数据进行分组时,使用GROUP BY加上指定的字段作为分组的标准

  • SELECT中出现的非组函数的字段(即不是出现在对分出来的每个组进行操作的函数中的字段)必须声明在GROUP BY中,GROUP BY中声明的字段不能出现在SELECT中。会出现冲突,比如,以工作职位分组,查询每个部门的平均工资,如果又要查询部门,但是每个工作职位的组中有不同的部门,就形成了冲突。(如果未分组即把所有的数据当作一个组,没有使用ORDER BY时的聚合函数也是组函数)

  • GROUP BY声明在FROM后面、WHERE后面

例:要按工作职位和工作部门两个标准来排序

SELECT job , deptno , AVG(sal)FROM empGROUP BY job , deptnoORDER BY AVG(sal) DESC;

GROUP BY中使用WITH ROLLUP

  • 使用WITH ROLLUP关键字后,在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有的记录的总和,即统计记录数量。

  • 当使用WITH ROLLUP时,不能同时使用ORDER BY子句进行结果排序,即ROLLUP和ORDER BY是互相排斥的。

HAVING的使用:

  • HAVING的作用是用来过滤数据。

  • 如果过滤条件中使用了聚合函数,则必须使用HAVING来替换WHERE

  • HAVING必须声明在GROUP BY后面

  • 使用HAVING的情况是SQL中使用了GROUP BY

  • 如果过滤条件中有聚合函数,则此过滤条件必须声明在HAVING中。如果过滤条件中没有聚合函数,则此过滤条件声明在WHERE中或HAVING中都可以,建议声明在WHERE中,执行效率会更高

SELECT执行顺序:

查询语句的代码的书写的顺序:

SELECT……FROM……WHERE……GROUP BY……HAVING……ORDER BY……LIMIT……

查询语句的执行顺序:

FROM……ON……JOIN……WHERE……GROUP BY……HAVING……SELECT的字段……DISTINCT……ORDER BY……LIMIT……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python-函数详解(局部、全局变量)

函数:一段可以被重复利用的代码 函数定义: def 函数名 (参数) 函数体 return 返回值(可有可无) def 函数名()#函数参数#函数体return #返回值(可有可无) 函数的调用:先定义,后调用 警告和错误: …

出生率持续下降,而低代码,成了!

低代码这个概念在IT界应该是火了很久,在十年前就有低代码的概念。 在最初的时候,我们都是用高级语言或者脚本来开发页面或者应用,比如Java、C,前端会使用Vue、React等等。但是我们发现经常写的功能或者页面都是重复的,…

Python实现内网穿透和端口转发代理

对于大型的爬虫项目,肯定需要有良好的反爬机制,还应该配合代理iP使用,只有这两种结合才能让你的爬虫更高效准确。今天我就借用我一点空闲时间,来谈一谈有关python爬虫网络方面的解决方案,这里提供内网穿透和端口转发两…

分治法解决众数重数

问题 D: 22-数组-2-众数问题 [命题人 : 外部导入] 时间限制 : 1.000 sec 内存限制 : 128 MB 题目描述 问题描述: 给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数,其中重数最大的元素称为众数。 例如,S{1&a…

基于多波束和时间调制平均的相位量化栅瓣抑制方法极其性能极限

概要 为了抑制相位量化所导致的量化栅瓣,在波束合成中引入随机虚拟相移(RVPS,Random Virtual Phase Shift),采用多波束平均(MBS,Multi-beam Average)或时间调制平均(TMA,Time-Modulated Average)方法实现了对量化栅瓣的抑制,仿真验证了方法的有效性及限制,并进一…

印刷企业实施数字工厂管理系统有几个步骤

随着科技的飞速发展,许多传统行业正面临着前所未有的挑战。印刷行业也不例外,尤其在面对生产效率低下,资源浪费严重等问题时,数字工厂管理系统的实施成为了必然选择。那么,印刷企业实施数字工厂管理系统具体有几个步骤…

echarts 柱状图 定时自动轮播(非提示框轮播)

看了很多文档都是实现提示框轮播的,而我要实现的功能是:柱状图有多条数据时,轮播展示其中几条,比如我有100条数据,不能全部展示,设置轮播5条或者10条,依次显示数据,并形成闭环。 &a…

zabbix配置snmp trap--使用snmptrapd和Bash接收器--图文教程

1.前言 我的zabbix的版本是5.0版本,5.0的官方文档没有使用bash接收器的示例,6.0的官方文档有使用bash接收器的示例,但是,下载文件的链接失效?! 这里讲解zabbix-server端配置和zabbix web端配置 2.zabbix-…

11、pytest断言预期异常

官方用例 # content of test_exception_zero.py import pytestdef test_zero_division():with pytest.raises(ZeroDivisionError):1/0# content of test_exception_runtimeerror.py import pytestdef test_recursion_depth():with pytest.raises(RuntimeError) as excinfo:def…

高效的单行python脚本

#-- coding: utf-8 -- “”" Created on Wed Dec 6 13:42:00 2023 author: czliu “”" 1. 平方列表推导 #使用列表推导法计算从 1 到 10 的数字平方 squares [x**2 for x in range(1, 11)] print(squares)2.求偶数 #可以使用列表推导式从列表中筛选偶数。还可以…

【Docker】 Docker attach 命令卡死的解决方案

在启动较早期的容器时,出现了使用 docker attach container_name 命令后卡死的问题。本文介绍了如何解决该问题。 首先,在使用 docker attach container_name 命令前需要先保证容器已经开启。此时,输入 docker attach container_name 命令后…

ncnn模型部署——使用VS2019把项目打包成DLL文件

一、项目打包成DLL文件 1.创建动态链接库DLL项目 创建完成,项目中包含源文件dllmain.cpp, pch.cpp,头文件framework.h, pch.h 2.编写和配置DLL项目 (1)配置pch.h文件,在头文件pch.h中定义宏,宏的作用的是…

【PyTorch】模型

文章目录 1. 模型的创建1.1. 创建方法1.1.1. 通过使用模型组件1.1.2. 通过继承nn.Module类 1.2. 将模型转移到GPU 2. 模型参数初始化3. 模型的保存与加载3.1. 只保存参数3.2. 保存模型和参数 1. 模型的创建 1.1. 创建方法 1.1.1. 通过使用模型组件 可以直接使用模型组件快速…

【Unity动画】Unity 2D动画创建流程

本文以2D为案例,讲解Unity 播放动画的流程 准备和导入2D动画资源 外部导入序列帧生成的 Unity内部制作的 外部导入的3D动画 2.创建动画过程 打开时间轴Ctrl6 选中场景中的一个未来需要播放动画的物体 回到时间轴点击Create一个新动画片段 拖动2D动画资源放入…

什么是SPA(Single Page Application)?它的优点和缺点是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

IT外包对中小企业的独特优势

在竞争激烈的商业环境中,企业的发展稍有缓慢,就很有可能被竞争对手快速赶超、趁机抢占市场。一些中小企业为了更好地应对市场变化和提高自身竞争力,越来越多地转向了IT外包服务。相较于大型企业,中小企业在选择IT外包时能够获得一…

数据结构实验任务七:基于广度优先搜索的六度空间理论验证

问题描述 “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论 可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是 说,最多通过五个人你就能够认识任何一个陌生人。”假如给你一个社交网络图&#xf…

java中用thumbnailator依赖写一个压缩图片的类,只要图片大小超过几兆就无限循环下去的详细代码实例?(经典)

下面是使用Thumbnailator依赖编写的一个压缩图片的类。该类会不断循环压缩图片,直到图片大小小于指定的阈值(以字节为单位)。 java Copy code import net.coobird.thumbnailator.Thumbnails; import java.io.File; import java.io.IOExcept…

Tap虚拟网卡

1 概述 Tap设备通常用于虚拟化场景下,其驱动代码位于drivers/net/tun.c,tap与tun复用大部分代码, 注:drivers/net/tap.c并不是tap设备的代码,而是macvtap和ipvtap; 下文中,我们统一称tap&#…

父子进程继承问题:OSError: [Errno 88] Socket operation on non-socket错误记录

目录 1 错误:self.server_address = self.socket.getsockname()OSError: [Errno 88] Socket operation on non-socket 2 错误排查过程 3 解决方法