数据库基础——8.单行函数

news2024/10/1 5:40:29

这篇文章我们来讲一下数据库里面的单行函数

目录

1. 函数的理解

1.1 什么是函数

1.2 不同DBMS函数的差异

1.3 MySQL的内置函数及分类

2. 数值函数

2.1 基本函数

2.2 角度与弧度互换函数

2.3 三角函数 

2.4 指数与对数 

2.5 进制间的转换 

3. 字符串函数 

4. 日期和时间函数 

4.1 获取日期、时间

4.2 日期与时间戳的转换 

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

4.4 日期的操作函数 

4.5 时间和秒钟转换的函数

4.6 计算日期和时间的函数

4.7 日期的格式化与解析 

5. 流程控制函数 

 6. 加密与解密函数

7. MySQL信息函数

8. 其他函数


1. 函数的理解

1.1 什么是函数

函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来, 需要的时候直接调用即可。这样既 提高了代码效率 ,又 提高了可维护性 。在 SQL 中我们也可以使用函数 对检索出来的数据进行函数操作。使用这些函数,可以极大地 提高用户对数据库的管理效率

从函数定义的角度出发,我们可以将函数分成 内置函数自定义函数 。在 SQL 语言中,同样也包括了 内置函数和自定义函数。内置函数是系统内置的通用函数,而自定义函数是我们根据自己的需要编写的,本章及下一章讲解的是 SQL 的内置函数。

1.2 不同DBMS函数的差异

我们在使用 SQL 语言的时候,不是直接和这门语言打交道,而是通过它使用不同的数据库软件,即 DBMS。DBMS 之间的差异性很大,远大于同一个语言不同版本之间的差异。实际上,只有很少的函数是 被 DBMS 同时支持的。比如,大多数 DBMS 使用(||)或者(+)来做拼接符,而在 MySQL 中的字符串拼 接函数为concat()。大部分 DBMS 会有自己特定的函数,这就意味着采用 SQL 函数的代码可移植性是很 差的,因此在使用函数的时候需要特别注意。

1.3 MySQL的内置函数及分类

MySQL提供了丰富的内置函数,这些函数使得数据的维护与管理更加方便,能够更好地提供数据的分析 与统计功能,在一定程度上提高了开发人员进行数据分析与统计的效率。

MySQL提供的内置函数从 实现的功能角度 可以分为数值函数、字符串函数、日期和时间函数、流程控制 函数、加密与解密函数、获取MySQL信息函数、聚合函数等。这里,我将这些丰富的内置函数再分为两 类: 单行函数 、 聚合函数(或分组函数)

两种SQL函数:

单行函数:

  • 操作数据对象
  • 接受参数返回一个结果
  • 只对一行进行变换
  • 每行返回一个结果
  • 可以嵌套
  • 参数可以是一列或一个值 

2. 数值函数

2.1 基本函数

例:SELECT ABS(-123),ABS(32),SIGN(-23),SIGN(43),PI(),CEIL(32.32),CEILING(-43.23),FLOOR(32.32), FLOOR(-43.23),MOD(12,5) FROM DUAL;

例:SELECT RAND(),RAND(),RAND(10),RAND(10),RAND(-1),RAND(-1) FROM DUAL; 

例:SELECT ROUND(12.33),ROUND(12.343,2),ROUND(12.324,-1),TRUNCATE(12.66,1),TRUNCATE(12.66,-1) FROM DUAL; 

2.2 角度与弧度互换函数

例:SELECT RADIANS(30),RADIANS(60),RADIANS(90),DEGREES(2*PI()),DEGREES(RADIANS(90)) FROM DUAL; 

2.3 三角函数 

例: SELECT SIN(RADIANS(30)),DEGREES(ASIN(1)),TAN(RADIANS(45)),DEGREES(ATAN(1)),DEGREES(ATAN2(1,1) ) FROM DUAL;

2.4 指数与对数 

例: SELECT POW(2,5),POWER(2,4),EXP(2),LN(10),LOG10(10),LOG2(4)  FROM DUAL;

2.5 进制间的转换 

例:SELECT BIN(10),HEX(10),OCT(10),CONV(10,2,8)  FROM DUAL; 

3. 字符串函数 

注意:MySQL中,字符串的位置是从1开始的。

例:SELECT FIELD('mm','hello','msm','amma'),FIND_IN_SET('mm','hello,mm,amma')  FROM DUAL;

4. 日期和时间函数 

4.1 获取日期、时间

例:SELECT CURDATE(),CURTIME(),NOW(),SYSDATE()+0,UTC_DATE(),UTC_DATE()+0,UTC_TIME(),UTC_TIME()+0 FROM DUAL;

 

4.2 日期与时间戳的转换 

例: SELECT UNIX_TIMESTAMP(now());

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

例: SELECT YEAR(CURDATE()),MONTH(CURDATE()),DAY(CURDATE()), HOUR(CURTIME()),MINUTE(NOW()),SECOND(SYSDATE()) FROM DUAL;

4.4 日期的操作函数 

EXTRACT(type FROM date)函数中type的取值与含义:

例:SELECT EXTRACT(MINUTE FROM NOW()),EXTRACT( WEEK FROM NOW()), EXTRACT( QUARTER FROM NOW()),EXTRACT( MINUTE_SECOND FROM NOW()) FROM DUAL;

4.5 时间和秒钟转换的函数

例:SELECT TIME_TO_SEC(NOW());

4.6 计算日期和时间的函数

第1组:

上述函数中type的取值:

 例:SELECT DATE_ADD(NOW(), INTERVAL 1 DAY) AS col1,DATE_ADD('2021-10-21 23:32:12',INTERVAL 1 SECOND) AS col2, ADDDATE('2021-10-21 23:32:12',INTERVAL 1 SECOND) AS col3, DATE_ADD('2021-10-21 23:32:12',INTERVAL '1_1' MINUTE_SECOND) AS col4, DATE_ADD(NOW(), INTERVAL -1 YEAR) AS col5, #可以是负数 DATE_ADD(NOW(), INTERVAL '1_1' YEAR_MONTH) AS col6 #需要单引号 FROM DUAL;

 

第2组: 

例: SELECT ADDTIME(NOW(),20),SUBTIME(NOW(),30),SUBTIME(NOW(),'1:1:3'),DATEDIFF(NOW(),'2021-10- 01'), TIMEDIFF(NOW(),'2021-10-25 22:10:10'),FROM_DAYS(366),TO_DAYS('0000-12-25'), LAST_DAY(NOW()),MAKEDATE(YEAR(NOW()),12),MAKETIME(10,21,23),PERIOD_ADD(20200101010101, 10) FROM DUAL;

4.7 日期的格式化与解析 

上述 非GET_FORMAT 函数中fmt参数常用的格式符:

 

GET_FORMAT函数中date_type和format_type参数取值如下:

例:SELECT DATE_FORMAT(NOW(), '%H:%i:%s');

5. 流程控制函数 

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

例:SELECT IF(1 > 0,'正确','错误')

 

例:SELECT employee_id,salary, CASE WHEN salary>=15000 THEN '高薪'
WHEN salary>=10000 THEN '潜力股'
WHEN salary>=8000 THEN '屌丝'
ELSE '草根' END "描述"
FROM employees;

 6. 加密与解密函数

加密与解密函数主要用于对数据库中的数据进行加密和解密处理,以防止数据被他人窃取。这些函数在 保证数据库安全时非常有用。

可以看到,ENCODE(value,password_seed)函数与DECODE(value,password_seed)函数互为反函数。

例:SELECT PASSWORD('mysql'), PASSWORD(NULL) 

7. MySQL信息函数

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

例: SELECT DATABASE();

8. 其他函数

MySQL中有些函数无法对其进行具体的分类,但是这些函数在MySQL的开发和运维过程中也是不容忽视的。

例:SELECT FORMAT(123.123, 2), FORMAT(123.523, 0), FORMAT(123.123, -2); 

说明:关于这个SQL的单行函数,我们掌握基本的数值函数,熟悉流程控制函数和MySQL信息函数,其他的认识就行,没必要记那么多。 

 

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

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

相关文章

PyCharm配置Opencv

具体方案: Plan A:可以直接在pycharm中配置(如果有梯子可以试试,没有可能下载不了) 参考视频:直接在Pycharm中配置即可 两分钟用Pycharm安装并配置OpenCV_哔哩哔哩_bilibili PlanB:通过终端安…

dolphinscheduler3.1.7windows部署启动说明

简介 Apache DolphinScheduler是一个新一代分布式大数据工作流任务调度平台,致力于“解决大数据任务之间错综复杂的依赖关系,整个数据处理开箱即用”。它以 DAG(有向无环图) 的方式将任务连接起来,可实时监控任务的运行状态,同时…

01Redis单线程 VS 多线程

不同版本,情况不同 Redis的版本很多3.x、4.x、6.x,版本不同架构也是不同的,不限定版本问是否单线程也不太严谨。 版本3.x ,最早版本,也就是大家口口相传的redis是单线程 数据结构简单避免锁的开销和上下文切换可以有…

YOLOv7 tiny 新增小目标检测层

YOLOv7 tiny 新增小目标检测层 YOLOv7 tiny 新增小目标检测层修改yolov7-tiny.yaml文件YOLOv7 tiny 结构图调用 models/yolo.py验证 YOLOv7 tiny 新增小目标检测层 根据已有的结构进行新增小目标层,,个人理解,仅供参考!&#xff…

GPT模型应用及遥感云大数据在灾害、水体与湿地领域典型案例展示

GPT GPT的全称,是Generative Pre-Trained Transformer(生成式预训练Transformer模型)是一种基于互联网的、可用数据来训练的、文本生成的深度学习模型。 GPT与专注于下围棋或机器翻译等某一个具体任务的“小模型”不同,AI大模型…

Seata XA 模式理论学习、使用及注意事项 | Spring Cloud54

一、前言 通过以下系列章节: docker-compose 实现Seata Server高可用部署 | Spring Cloud 51 Seata AT 模式理论学习、事务隔离及部分源码解析 | Spring Cloud 52 Spring Boot集成Seata利用AT模式分布式事务示例 | Spring Cloud 53 我们对Seata及其AT事务模式的…

chatgpt赋能python:Python下载后的打开方法

Python 下载后的打开方法 Python是一种流行的编程语言,用于开发各种类型的应用程序,从Web应用程序到数据分析工具再到科学计算应用程序。许多人下载了Python,但是不确定如何在计算机上安装和打开它。在本篇文章中,我们将讨论Pyth…

如何实现UI交互?

UE5 插件开发指南 前言0 交易物品1 拖放物品1.0 拖放在背包里1.1 拖放在快捷栏里1.2 拖放在商店里1.3 放在其他地方2 小结前言 之前实现了UI的显示,这一篇补充UI的交互功能实现,先把思维导图画出来,程序员的自我修养就是任何时候都要理清思路,思路清晰是编码的前提,如下所…

解决幂等问题

1.概述 作为开发人员,我们每天都要开发大量的接口,其中包括了读接口和写接口,而对于写接口来说,除了要保证他的性能、可用性以外,还需要有一个重要的问题,那就是考虑如何保证接口的幂等性。 “幂等&#x…

mysql数据库连接失败授权认证 reading authorization packet --别的电脑可以,但是本地电脑连接失败

1.分析原因是否由于本机多次失败连接导致 在能连接的主机上或者服务器上 查看当前数据库阻断连接次数是否在不断增长 SHOW GLOBAL STATUS LIKE Aborted_connects;1.2观察这个终端连接次数是否一直在增长 如果一直在增长,说明mysql服务器被计算机不断的进行连接且被…

安科瑞针对HVDC方案推出的解决方案介绍

​安科瑞虞佳豪 摘 要:近年来,随着数据中心的迅猛发展,数据中心的能耗问题也越来越突出,有关数据中心的能源管理和供配电设计已经成为热门问题,合理可靠的数据中心配电系统方案,是提高数据中心电能使用效率…

数据结构与算法05:跳表和散列表

目录 【跳表】 跳表的实现原理 如何确定跳表的层高? 【散列表】 散列函数的设计 散列冲突 (1)开放寻址法(Open Addressing) (2)链表法(chaining) 装载因子 如何…

如何把两个视频拼接在一起?这些工具太棒了!

如何把两个视频拼接在一起?对于自媒体行业的人来讲,平时在进行短视频的剪辑时,总会需要合并多个视频,之后再剪辑处理。不过对于大部分没有从事自媒体行业的人来讲,可能对合并视频并不了解。下面我就来给大家分享可以拼…

paddleclas pp-shitu v1/v2

null集开放数据、开源算法、免费算力三位一体,为开发者提供高效学习和开发环境、高价值高奖金竞赛项目,支撑高校老师轻松实现AI教学,并助力开发者学习交流,加速落地AI业务场景https://aistudio.baidu.com/aistudio/projectdetail/…

BlackIce病毒分析

概述 blackice是一个古老的感染型病毒,可感染系统中exe、doc和xls文件,通过USB设备和网络驱动器来传播,会向C&C下载pe执行,会关闭常用的杀软进程。下面找了一个样本,这个样本的代码结构清晰,用IDA pro…

客服配置-shopro

客服配置 注意事项 shopro客服系统 采用 workerman 的 gateway-worker 作为服务基础,请先安装 gateway-worker 扩展包shopro商城 已不再支持 workerman 在线客服插件 安装部署 安装扩展包 composer require workerman/gateway-worker:~3.0 删除禁用函数(如有未列…

Postman中加url环境变量和token全局变量

环境变量引用 语法:{{变量名}} 环境变量分类 1. 全局变量:全局有效,在Postman中的任何集合中都可以使用该变量,作用域最大。 2. 环境变量:要申明环境变量,先要创建环境,然后在该环境中创建变…

KPI考核对企业能起到什么作用?公司该如何建立标准化

什么是KPI考核 KPI考核是指对企业或组织的关键绩效指标进行量化的评估和监控,以了解其业务目标的实现情况。 KPI(Key Performance Indicators)是指关键绩效指标,是衡量企业或组织成功的基本指标。对KPI进行考核可以帮助企业或组织…

破解极域(4):万能密码法(可以获取到原密码)

破解极域(4):万能密码法 1.思路2.实现2.1 获得密码2.2 解除控制2.3 特别注意 3.视频展示 今天来分享下破解极域的第4种方法——万能密码法 1.思路 首先,我们要知道的是,极域这个东西它有一个万能密码,万能…

网络安全+自学笔记

学前感言: 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了.2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发.3.有时多 google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答.4.遇到实在搞不懂的,可以先放放,以后再来解决. 基…