【MySQL进阶之路丨第十六篇】一文带你精通MySQL函数

news2024/9/20 15:08:04

引言
在这里插入图片描述

在上一篇中我们介绍了MySQL数据的导入与导出;在开发中,对MySQL函数的运用是十分重要的。这一篇我们使用命令行方式来帮助读者掌握MySQL中函数的操作。

上一篇链接:【MySQL进阶之路丨第十五篇】一文带你精通MySQL数据的导入与导出

MySQL 函数

MySQL提供了很多内置函数,用于处理和操作数据库中的数据。本文给出部分函数描述及其实例。

MySQL 字符串函数

函数描述实例
ASCII(s)返回字符串 s 的第一个字符的 ASCII 码。返回 CustomerName 字段第一个字母的 ASCII 码: SELECT ASCII(CustomerName) AS NumCodeOfFirstChar FROM Customers;
CHAR_LENGTH(s)返回字符串 s 的字符数返回字符串 QIUSHUO 的字符数 SELECT CHAR_LENGTH("QIUSHUO") AS LengthOfString;
CHARACTER_LENGTH(s)返回字符串 s 的字符数,等同于 CHAR_LENGTH(s)返回字符串 QIUSHUO 的字符数 SELECT CHARACTER_LENGTH("QIUSHUO") AS LengthOfString;
CONCAT(s1,s2…sn)字符串 s1,s2 等多个字符串合并为一个字符串合并多个字符串 SELECT CONCAT("SQL ", "QIUSHUO ", "Gooogle ", "Facebook") AS ConcatenatedString;
CONCAT_WS(x, s1,s2…sn)同 CONCAT(s1,s2,…) 函数,但是每个字符串之间要加上 x,x 可以是分隔符合并多个字符串,并添加分隔符: SELECT CONCAT_WS("-", "SQL", "QIUSHUO", "ABC", "E")AS ConcatenatedString;
FIELD(s,s1,s2…)返回第一个字符串 s 在字符串列表(s1,s2…)中的位置返回字符串 c 在列表值中的位置: SELECT FIELD("c", "a", "b", "c", "d", "e");
FIND_IN_SET(s1,s2)返回在字符串s2中与s1匹配的字符串的位置返回字符串 c 在指定字符串中的位置: SELECT FIND_IN_SET("c", "a,b,c,d,e");
FORMAT(x,n)函数可以将数字 x 进行格式化 “#,###.##”, 将 x 保留到小数点后 n 位,最后一位四舍五入。格式化数字 “#,###.##” 形式: SELECT FORMAT(250500.5634, 2); -- 输出 250,500.56
INSERT(s1,x,len,s2)字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串从字符串第一个位置开始的 6 个字符替换为 QIUSHU: SELECT INSERT("google.com", 1, 6, "QIUSHU"); -- 输出:QIUSHU.com

MySQL 数字函数

函数名描述实例
ABS(x)返回 x 的绝对值返回 -1 的绝对值: SELECT ABS(-1) -- 返回1
ACOS(x)求 x 的反余弦值(单位为弧度),x 为一个数值SELECT ACOS(0.25);
ASIN(x)求反正弦值(单位为弧度),x 为一个数值SELECT ASIN(0.25);
ATAN(x)求反正切值(单位为弧度),x 为一个数值SELECT ATAN(2.5);
ATAN2(n, m)求反正切值(单位为弧度)SELECT ATAN2(-0.8, 2);
AVG(expression)返回一个表达式的平均值,expression 是一个字段返回 Products 表中Price 字段的平均值: SELECT AVG(Price) AS AveragePrice FROM Products;
CEIL(x)返回大于或等于 x 的最小整数SELECT CEIL(1.5) -- 返回2
CEILING(x)返回大于或等于 x 的最小整数SELECT CEILING(1.5); -- 返回2
COS(x)求余弦值(参数是弧度)SELECT COS(2);
COT(x)求余切值(参数是弧度)SELECT COT(6);

MySQL 日期函数

函数名描述实例
ADDDATE(d,n)计算起始日期 d 加上 n 天的日期SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY); ->2017-06-25
ADDTIME(t,n)n 是一个时间表达式,时间 t 加上时间表达式 n加 5 秒: SELECT ADDTIME('2011-11-11 11:11:11', 5); ->2011-11-11 11:11:16 (秒) 添加 2 小时, 10 分钟, 5 秒: SELECT ADDTIME("2020-06-15 09:34:21", "2:10:5"); -> 2020-06-15 11:44:26
CURDATE()返回当前日期SELECT CURDATE(); -> 2018-09-19
CURRENT_DATE()返回当前日期SELECT CURRENT_DATE(); -> 2018-09-19
DATEDIFF(d1,d2)计算日期 d1->d2 之间相隔的天数SELECT DATEDIFF('2001-01-01','2001-02-02') -> -32
DATE_FORMAT(d,f)按表达式 f的要求显示日期 dSELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r') -> 2011-11-11 11:11:11 AM
DATE_SUB(date,INTERVAL expr type)函数从日期减去指定的时间间隔。Orders 表中 OrderDate 字段减去 2 天: SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders
DAY(d)返回日期值 d 的日期部分SELECT DAY("2017-06-15"); -> 15
DAYNAME(d)返回日期 d 是星期几,如 Monday,TuesdaySELECT DAYNAME('2011-11-11 11:11:11') ->Friday
DAYOFMONTH(d)计算日期 d 是本月的第几天SELECT DAYOFMONTH('2011-11-11 11:11:11') ->11
MAKEDATE(year, day-of-year)基于给定参数年份 year 和所在年中的天数序号 day-of-year 返回一个日期SELECT MAKEDATE(2017, 3); -> 2017-01-03
MAKETIME(hour, minute, second)组合时间,参数分别为小时、分钟、秒SELECT MAKETIME(11, 35, 4); -> 11:35:04

MySQL 高级函数

函数名描述实例
BIN(x)返回 x 的二进制编码15 的 2 进制编码: SELECT BIN(15); -- 1111
CAST(x AS type)转换数据类型字符串日期转换为日期: SELECT CAST("2017-08-29" AS DATE); -> 2017-08-29
CONNECTION_ID()返回唯一的连接 IDSELECT CONNECTION_ID(); -> 4292835
CONV(x,f1,f2)返回 f1 进制数变成 f2 进制数SELECT CONV(15, 10, 2); -> 1111
CURRENT_USER()返回当前用户SELECT CURRENT_USER(); -> guest@%
DATABASE()返回当前数据库名SELECT DATABASE(); -> runoob
IF(expr,v1,v2)如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。SELECT IF(1 > 0,'正确','错误') ->正确
ISNULL(expression)判断表达式是否为 NULLSELECT ISNULL(NULL); ->1
SYSTEM_USER()返回当前用户SELECT SYSTEM_USER(); -> guest@%
USER()返回当前用户SELECT USER(); -> guest@%
VERSION()返回数据库的版本号SELECT VERSION() -> 5.6.34

实操

接下来让我们通过一些语句更好地了解函数的使用。

假设我们有一个名为 “students” 的表,其中包含学生的成绩信息。如下所示:

student_idnamescore
1Alice85
2Bob92
3Charlie78
4David88

如果我们想要计算所有学生的平均分数,我们可以使用 AVG() 函数,如下所示:

SELECT AVG(score) AS average_score FROM students;

这会返回一个结果,即所有学生的平均分数:

average_score
85.75

在这个例子中,AVG() 函数计算了 “score” 列中所有值的平均值,并将结果命名为 “average_score”。

假设我们有一个名为 “products” 的表,其中包含产品的信息,以及它们的价格和折扣情况。如下所示:

product_idproduct_namepricediscounted
1Laptop12001
2Smartphone8000
3Tablet5001
4Headphones1000

现在,假设我们想要创建一个新的列,用于显示每个产品的实际售价,如果该产品享受折扣,则应该显示折扣后的价格,否则显示原价。我们可以使用 IF() 函数来实现这一点,如下所示:

SELECT 
    product_name, 
    price, 
    discounted,
    IF(discounted = 1, price * 0.9, price) AS final_price
FROM 
    products;

在这个例子中,IF() 函数根据 “discounted” 列的值来判断是否应用折扣。如果 “discounted” 的值为 1,即享受折扣,那么使用折扣后的价格 (price * 0.9),否则使用原价。最终查询的结果会包括产品名称、原价、折扣情况以及最终价格:

product_namepricediscountedfinal_price
Laptop120011080
Smartphone8000800
Tablet5001450
Headphones1000100

通过这个例子,我们可以看到 IF() 函数的灵活性,可以根据条件返回不同的值,非常适合用于数据处理和报表生成等场景。

最后拿CONNECTION_ID()函数举例:假设我们正在管理一个书店的数据库,其中有一张表books,包含了书籍的标题(title)、作者(author)和价格(price)等信息。

CREATE TABLE books (
    id INT PRIMARY KEY,
    title VARCHAR(255),
    author VARCHAR(255),
    price DECIMAL(7,2)
);

INSERT INTO books (id, title, author, price)
VALUES 
(1, 'To Kill a Mockingbird', 'Harper Lee', 10.99),
(2, '1984', 'George Orwell', 8.99),
(3, 'One Hundred Years of Solitude', 'Gabriel Garcia Marquez', 12.99),
(4, 'Pride and Prejudice', 'Jane Austen', 9.99),
(5, 'The Great Gatsby', 'F. Scott Fitzgerald', 11.99);

现在,我们想找出所有标题长度超过10个字符的书籍。

查询语句如下:

SELECT title, author, price 
FROM books 
WHERE CHARACTER_LENGTH(title) > 10;

总结

以上为 【MySQL进阶之路丨第十六篇】,带领读者掌握 MySQL函数,通过具体实操实现对MySQL数据库的深度理解。

MySQL系列将持续更新,欢迎订阅收藏。

在这里插入图片描述

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

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

相关文章

SQL第五次上机实验

1.向图书表(Book)插入以下记录 USE TSGL GO INSERT INTO Book VALUES(7-5402-1800-3,文学类,边城,沈从文,燕山出版社,10,5,5)2.向借阅表插入以下两条记录 USE TSGL GO INSERT INTO Lend VALUES(201207034201,7-5402-1800-3,00366240,2013-04-22),(2012…

网络运维Day06-补充

文章目录 RAID磁盘阵列RAID0条带模式RAID1镜像模式RAID5高性价比模式RAID01RAID10 逻辑卷一块磁盘的使用流程逻辑卷的使用流程 制作逻辑卷步骤一:添加硬盘步骤二:分区规划步骤三:制作物理卷步骤四:制作卷组步骤五:制作…

【网络知识必知必会】构造HTTP请求的几种方法

文章目录 前言1. 通过 form 表单构造 HTTP 请求1.1 HTML 编程1.2 认识下 HTML1.3 form 发送 GET 请求form 的重要参数:input 的重要参数:使用 Fiddler 查看我们构造的 HTTP 请求体会 form 代码和 HTTP 请求之间的对应关系 1.4 form 发送 POST 请求使用 Fiddler 查看我们构造的 …

【PHP函数封装】分分钟帮你实现数据脱敏处理, 支持手机号码、邮箱、身份证号 中文字符串!

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&#x1…

Linux学习之进程三

目录 进程控制 fork函数 什么是写时拷贝 进程终止 mian函数的返回值 退出码 错误码 exit() 进程等待 1.什么是进程等待? 2.为什么要进行进程等待? 3.如何进程进程等待? wait,waitpid: waitpid 进程替换 …

【Git】Gui图形化管理、SSH协议私库集成IDEA使用

一、Gui图形化界面使用 1、根据自己需求打开管理器 2、克隆现有的库 3、图形化界面介绍 1、首先在本地仓库更新一个代码文件,进行使用: 2、进入图形管理界面刷新代码资源: 3、点击Stage changed 跟踪文件,将文件处于暂存区 4、通过…

基于JavaWeb+SpringBoot+Vue摩托车商城微信小程序系统的设计和实现

基于JavaWebSpringBootVue摩托车商城微信小程序系统的设计和实现 源码传送入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 近年来,随着移动互联网的快速发展,电子商务越来越受到…

javascript用localStorage存储用户搜索词记录,并在搜索框下展显搜索词记录

//首先是storage的一封装 //storage.js文件 function storage(){//设置storage密钥this.ms"mystorage";}//以下为函数的原型方法//获得localStorage值storage.prototype.getLocalfunction(key){//先检查设置的localStorage的密钥var mydatalocalStorage.getItem(thi…

问题描述:64位计算机的寻址能力是多少TB

问题描述:64位计算机的寻址能力是多少TB 我在看到一个32位电脑的寻址能力计算时,看到是这么计算的。 虚拟内存的大小受到计算机地址位数的限制, 那么32位电脑的寻址能力计算应该是这样 为什么网上百度到的是16TB呢,如下图所示 中…

数据库安全:Hadoop 未授权访问-命令执行漏洞.

数据库安全:Hadoop 未授权访问-命令执行漏洞. Hadoop 未授权访问主要是因为 Hadoop YARN 资源管理系统配置不当,导致可以未经授权进行访问,从而被攻击者恶意利用。攻击者无需认证即可通过 RESTAPI 部署任务来执行任意指令,最终完…

winform打包默认安装路径设置

点击安装程序的 Application Folder 修改属性中的 DefaultLocation

高校教务系统登录页面JS分析——长沙理工大学教务系统

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文将是本专栏最后一篇文章,我看了绝大多数高…

【编程语言发展史】Go语言的发展历史

目录 Go的起源 Go语言发展时间轴 logo Go的起源 Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目,即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作。该项目的三位领导者均是著名的 …

1. 深度学习——激活函数

机器学习面试题汇总与解析——激活函数 本章讲解知识点 什么是激活函数? 为什么要使用激活函数? 详细讲解激活函数 本专栏适合于Python已经入门的学生或人士,有一定的编程基础。本专栏适合于算法工程师、机器学习、图像处理求职的学生或人…

CAN轴【禾川】

禾川CAN轴有问题。 厂家说是只能使用禾川的伺服X2EN,和X3EN 添加CAN主站: 网络: 0 波特率: 1000K 添加CAN总线: 主站: 2 同步帧: 80h 设置刷新时间 时间帧:100h 添加伺服&…

野火i.MX6ULL开发板wifi连接、SHH登录玄学篇

1、WiFi连接成功 服了,一样的步骤,它又行了。 手机开热点,2.4G频段,wanghaha,连上显示了IP地址,输入ping 百度网址 等了七八秒它访问成功。 中间还用过usb线刷镜像Debian。 2、使用 MobaXterm SSH 登录…

页表和cache

页表基本原理 页表主要用来将虚拟地址映射到物理地址,在使用虚拟地址访问内存时,微处理器首先将虚拟地址拆分成页号和页内偏移量,然后使用页号在页表中查找对应的物理页框号,将物理页地址加上页内偏移量,得到最终的物…

skynet学习笔记02— skynet介绍、skynet基础API与环境变量

01、Skynet与Actor模型 在系统Skynet之前,先了解一下Skynet与Actor模型,下列是风云大佬的介绍以及一个大佬的博客 https://github.com/cloudwu/skynet/wiki/GettingStartedhttps://blog.csdn.net/qq769651718/article/details/79432793 02、Skynet基础…

3.前端调式(断点调式)

1. Elements 先来看这张图最上头的一行是一个功能菜单,每一个菜单都有它相应的功能和使用方法,依次从左往右来看 箭头按钮 用于在页面选择一个元素来审查和查看它的相关信息,当我们在Elements这个按钮页面下点击某个Dom元素时,箭…

【全网首发】【Python】Python控制parrot ARDrone 2.0无人机

🎉欢迎来到Python专栏~Python控制parrot ARDrone 2.0无人机 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:Python学习专栏 文章作者技术和水平有限,如果文中出现错误…