Linux下学【MySQL】常用函数助你成为数据库大师~(配sql+实操图+案例巩固 通俗易懂版~)

绪论​
在这里插入图片描述
每日激励:“唯有努力,才能进步”

绪论​:
本章是MySQL中常见的函数,利用好函数能很大的帮助我们提高MySQL使用效率,也能很好处理一些情况,如字符串的拼接,字符串的获取,进制的转换以及保存密码时的加密等等,通过本章你将了解到非常多函数,但有个影响就好,收藏起来到指定场景用到了在来看看就好,下面我将持续更新MySQL,敬请期待~
————————
早关注不迷路,话不多说安全带系好,发车啦(建议电脑观看)。


1. MySQL 中函数的使用场景

在 MySQL 中,函数可以在多个地方使用,包括但不限于以下几种情况:

  1. SELECT 语句中的计算
    函数可以在 SELECT 查询中用来处理数据、进行计算或转换数据。例如:

    SELECT UPPER(name) FROM users;
    
  2. WHERE 子句
    可以在 WHERE 子句中使用函数来过滤数据。例如:

    SELECT * FROM users WHERE LENGTH(name) > 5;
    
  3. ORDER BY 子句
    函数可以在 ORDER BY 子句中使用来排序数据。例如:

    SELECT * FROM users ORDER BY LOWER(name);
    
  4. INSERT 语句中
    在插入数据时,可以使用函数对数据进行处理。例如:

    INSERT INTO users (name, email) VALUES (UPPER('john'), CONCAT('john', '@example.com'));
    
  5. UPDATE 语句中
    在更新数据时,可以使用函数修改字段的值。例如:

    UPDATE users SET email = CONCAT(name, '@example.com') WHERE id = 1;
    
  6. GROUP BY 子句
    函数可以在 GROUP BY 子句中使用,尤其是在聚合函数的情况下。例如:

    SELECT UPPER(name), COUNT(*) FROM users GROUP BY UPPER(name);
    
  7. HAVING 子句
    HAVING 子句中使用函数来对分组后的数据进行进一步的过滤。例如:

    SELECT name, COUNT(*) FROM users GROUP BY name HAVING COUNT(*) > 1;
    
  8. 视图 (View)
    函数也可以在视图中使用,对查询结果进行处理。例如:

    CREATE VIEW user_email_view AS
    SELECT name, CONCAT(name, '@example.com') AS email FROM users;
    
  9. 存储过程和触发器
    函数可以在存储过程或触发器中使用进行更复杂的操作。例如:

    DELIMITER //
    CREATE PROCEDURE GetUserInfo(IN user_id INT)
    BEGINSELECT name, CONCAT(name, '@example.com') FROM users WHERE id = user_id;
    END //
    DELIMITER ;
    

总结:
MySQL 的函数可以在查询的多个部分使用,包括数据选择、插入、更新、排序、分组、条件过滤等操作


下述函数将使用select执行,这样能很好的直接提现每个函数的功能,对于一些较为简单的就不配源码了,直接上实操图,对于不同场景具体分析具体使用!


2. 日期相关的函数

2.1 获取当前日期:current_date

在这里插入图片描述

2.2 获取当前时间:current_time

在这里插入图片描述

2.3 获取当前时间戳:current_timestamp

是日期 + 时间 (并不是秒数 )
在这里插入图片描述

2.4 获取当前时间的函数:now

t

2.5 从时间中提取时间:date(daetime)

select date('1949-10-01 00:00:00')

在这里插入图片描述

2.6 增加时间date_add(date,interval d_value_type)

其中参数:

  • date:可以添加日期或时间:
  • interval d_value_type:d_value_type数值的单位可以是year、minute、second、day
    具体使用如下:
    写法为:
select date_add('2025-01-01',interval 10 day);interval + ...

在这里插入图片描述
并且最终它还会按照日历进行计算

在日期的基础上减去时间:date_sub

同理:
在这里插入图片描述

计算两个日期之间相差多少天:datediff

使用前者的日期 减去 后者的日期
具体如下:
在这里插入图片描述

实操记录生日

create table tmp(id bigint primary key auto_increment,birthday date
);

插入时间:

insert into tmp(birthday) values(1990-01-01);

插入数据:
在这里插入图片描述
插入的细节:

  • 其中current_time / current_date / current_datestamp获取到的数据都可以插入进去(其中 current_time也能重哈如可能有点奇怪但确实可以)
  • 但还是就直接使用,对应的使用,日期就插入日期

实操实现留言板

创建表:
create table msg (
id bigint primary key auto_increment,
content varchar(100) not null,
sendtime datetime
);
插入数据:
insert into msg(content,sendtime) values('hello1', now());
insert into msg(content,sendtime) values('hello2', now());
select * from msg;

实现类似留言板的功能(评论),当你发表言论后会记录你到内容和时间。
在这里插入图片描述

3. 字符串相关函数

3.1 查看列属性的字符集:charset(string)

select charset(sal) from emp;

在这里插入图片描述
还能直接查看(表是提前配置好的)
在这里插入图片描述

3.2 拼接字符串 concat(string,…)

将传递进来的参数都看成字符串,然后拼接。
在这里插入图片描述

3.3 字符串中查找字符串 instr(string,substring)

不存在返回0,存在返回位置(从1开始的位置)

3.4 将string中大小写转换 ucase / lcase(string)

在这里插入图片描述

3.5 从左端提取len个字符 left(string,len)

同样的还有对应的 right(string,len) 从右端开始往左取len个字符
具体操作如下图:
在这里插入图片描述
还剩一些如下图:
在这里插入图片描述

3.6 concat 函数实操

要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分。

其中可以使用select进行筛选
在这里插入图片描述
但发现并不太优雅,现在需要通过全字符串的形式展示:
那么就是使用前面的concat函数:将获取的数据拼接成字符串
在这里插入图片描述

3.7 获取字符串长度 length

求学生表中学生姓名占用的字节数
其中length求的是字节数,当求字符长度时,如汉字时就会算出来汉字所占的字节数在这里插入图片描述
其中下图:汉字两个共6byte(一个汉字3byte),三个数字各占1字节(3byte)
在这里插入图片描述

3.8 在字符串中进行字符串的替换 replace

replace(str,search_str,replace_str);
str:所要查找的str
search_str:查找的字符串
replace_str:查找后进行替换的字符串

先查找查找到后进行替换
在这里插入图片描述
此处的替换仅仅只是查看,并不是真正的在数据进行替换

3.9 字符串截取 substring

substring(colum,pos,len);
若len不写默认从pos截取剩下所有

在这里插入图片描述

3.10 以首字母小写的方式显示所有员工的姓名 实操

select ename ,concat(lcase(substring(ename,1,1)),substring(ename,2))from emp;

在这里插入图片描述

3.11 去除字符串中最开始和最后的空格 trim

ltrim:只去除最开始的(最左边的)、rtrim:只去除最后的(右边的)
在这里插入图片描述
用于:在对用户信息数据的保存时先进行去除空格操作,也就是网络传输后进行排除字符串,防止在网络传输过程中的出现添加了看不见的空字符,我们需要将其删除后再存进数据库中,不然假设有空格的话,如当用户再次输入自己的用户密码时会因为空格的原因导致无法登录,而且这种问题非常难以排查。

4. 数学函数

4.1 abs 取绝对值

select abs(-12);

在这里插入图片描述

4.2 bin 转二进制

简单就不写了
在这里插入图片描述

4.3 hex 转十六进制

在这里插入图片描述

3.3 conv 进制转换

select conv(number,fromm_base,to_base);
将数字number,从from_base进制 转换成 to_base进制

在这里插入图片描述

4.5 format 格式化,保留小数

select(number,dicimal_places);

在这里插入图片描述

4.7 mod 取模

在这里插入图片描述

4.8 random生成随机数

生成的数是从 0.0 ~ 1.0,当我们想要生成指定范围的我们就直接 * 10n即可实现(如 * 10的话就是 0 ~ 10)
在这里插入图片描述
其中还能嵌套函数使用,当我们将format和rand嵌套使用的话就能生成整数的随机数:
在这里插入图片描述

4.9 ceiling 向上取整

0向取整:

对于任何小数取整时都直接去除小数(如-14.1 = -14 、22.8 = 22)

那么向上取整的意思是:对于任何浮点数来说都按大取整(为啥叫向上取整见下图:)
在这里插入图片描述
取整情况为:3.1 取整为 4、-3.9 取整为 -3
实操图如下:
在这里插入图片描述

4.10 floor 向下取整(一般语言中用的比较多)

反之就是向下取整,就是将所有小数按小的方向取整
再如上图举例:-3.1 取整为 -4,3.9 取整为 3
实操如下图:
在这里插入图片描述

5. 一些其他函数

5.1 查看当前用户 user

select user;

在这里插入图片描述

5.2 database查看当前数据库

在这里插入图片描述

5.3 md5 加密

常用于加密密码:
因为密码在实际工作中一般是不直接在数据库中明文存储的,其中md5加密后变成一个32位的哈希值。

创建一个表用于测试:
在这里插入图片描述
也就是说当完成在插入过程中对密码使用md5进行加密然后再插入:
在这里插入图片描述
当我们查询时,因为内部存储的密码是md5加密的,所以查询时判断的密码也需要进行md5,这样才能正常的查询到。
在这里插入图片描述

5.4 password 设置密码

password是MySQL内部也设定了的函数,它专门用于设置密码,同样也会生成一个等长的字符串(一般也常用这个来进行设置
在这里插入图片描述

5.5 ifnull(val1,val2)

如果val1为空就返回val2,若val1不为空则就直接返回val1了
也非常好理解就不写sql了,直接上实操图:
在这里插入图片描述


本章完。预知后事如何,暂听下回分解。

如果有任何问题欢迎讨论哈!

如果觉得这篇文章对你有所帮助的话点点赞吧!

持续更新大量MySQL细致内容,早关注不迷路。

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

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

相关文章

波特率、比特率、传信率、传码率......

去年搞过一段时间的无线通信,当时我脑子里真的是一团乱麻,本身咱也不是学通信的,咱是学机械出身的,后面又搞电,反正对于通信这一块就不是很懂,后面也慢慢搞出来了一点小东西,但是对于一些细节还…

华为HCIE认证用处大吗?

新盟教育 专注华为认证培训十余年 为你提供认证一线资讯! 在ICT行业的认证体系中,华为HCIE认证一直备受关注。那么,华为HCIE认证用处大吗?今天咱们就来深入探讨一下,以数据通信方向为例,看看它到底能带来什…

【WRF-Chem】预处理工具(Preprocessors)总结

WRF-Chem 预处理工具(Preprocessors) 化学选项(Chemistry Options)数据下载 预处理工具(Preprocessors)工具1:mozbc工具2:bio_emiss工具3:anthro_emiss工具4:…

六、OpenGL中EBO的使用及本质

文章目录 一、什么是顶点索引二、什么是EBO三、EBO使用的完整代码 一、什么是顶点索引 OpenGL 中,顶点索引(Vertex Index)用于减少重复的顶点数据,提高绘制效率。其核心概念涉及索引缓冲对象(Index Buffer Object&…

Python+jupyter进行数据分析与数据挖掘

随着人工智能的发展,现在越来越多人使用Python语言进行数据分析。Python在数据分析中有哪些优势呢?由于Python中有很多的第三方插件,接下来我们探讨Pythonjupyter的结合,在数据分析领域中的应用。 一、jupyter介绍 Jupyter 是一个…

AI4CODE】3 Trae 锤一个贪吃蛇的小游戏

【AI4CODE】目录 【AI4CODE】1 Trae CN 锥安装配置与迁移 【AI4CODE】2 Trae 锤一个 To-Do-List 这次还是采用 HTML/CSS/JAVASCRIPT 技术栈 Trae 锤一个贪吃蛇的小游戏。 1 环境准备 创建一个 Snake 的子文件夹,清除以前的会话记录。 2 开始构建 2.1 输入会…

PostgreSQL17(最新版)安装部署

PostgreSQL 17已与2024年9月26日正式发布!!! 一、Postgres概述 官网地址:PostgreSQL: The world’s most advanced open source database Postgres作为最先进的开源数据库( the latest version of the world’s most…

捌拾贰- 贝尔不等式 (2)

1. 贝尔不等式理解 我感觉我前期理解的不是很对 柒拾玖- 贝尔不等式 … 思来想去几天,感觉贝尔不等式应该是这样来的 因为观测的值只有可能是 1 (别问我为什么) , 设观测角度 Q 值为 1 的概率为 a , -1 的概率为 b , Q 的数学期望值为 E(Q) a * 1 b * (-1) a…

小凯的疑惑(数论 )

#include <iostream> using namespace std; typedef long long ll; int main() {// 请在此输入您的代码ll a,b;cin>>a>>b;ll N a * b - a - b;cout << N ;return 0; } 如果 a 和 b 互素&#xff0c;那么 a * b - a - b 是最大无法被表示的金额

Android内存泄漏检测与优化

Android内存泄漏检测与优化 一、内存泄漏基础知识 1.1 什么是内存泄漏 在Android开发中&#xff0c;内存泄漏(Memory Leak)是指程序在申请内存后&#xff0c;无法释放已申请的内存空间&#xff0c;导致系统可用内存减少的问题。随着泄漏内存的增加&#xff0c;应用可能会变得…

51单片机Proteus仿真速成教程——P1-软件与配置+Proteus绘制51单片机最小系统+新建程序模版

前言&#xff1a;本文主要围绕 51 单片机最小系统的绘制及程序模板创建展开。首先介绍了使用 Proteus 绘制 51 单片机最小系统的详细步骤&#xff0c;包括软件安装获取途径、工程创建、器件添加&#xff08;如单片机 AT89C51、晶振、电容、电阻、按键等&#xff09;、外围电路&…

微信小程序校园跑腿的设计与实现【lw+源码+部署+视频+讲解】

第一章 绪论 1.1 本课题研究背景 近年来城市与社会经济发展较快&#xff0c;人们的生活水平不断提高&#xff0c;消费观念发生很大变化&#xff0c;随着 微信小程序技术的发展&#xff0c;小程序已经渗透到人们日常生活的方方面面&#xff0c;悄悄地改变着人们的生活方式。在…

多用户网页在线聊天室(测试报告)

文章目录 多用户网页在线聊天室一&#xff0c;项目概括1.1 项目名称1.2 测试时间1.3 项目背景1.3 编写目的 二&#xff0c;测试计划2.1 测试环境与配置2.2 测试用例2.3实际执行用例2.3.1登录2.3.2聊天消息列表展示2.3.3聊天消息详情页展示2.3.4联系人页展示2.3.5信息的编辑与发…

自由学习记录(43)

不同的服务器可以使用不同协议&#xff0c;但协议本身不会决定服务器的类型 类型特点物理服务器真实的计算机&#xff08;如 Dell、HP 服务器&#xff09;虚拟服务器运行在云计算平台上的 VM&#xff08;如 AWS EC2、阿里云 ECS&#xff09;容器化服务器通过 Docker / Kuberne…

Vue框架

一. 什么是Vue 1. Vue是一款用于构建用户界面的渐进式的JavaScript框架。(官方&#xff1a;https://cn.vuejs.org/) 2. 框架&#xff1a;就是一套完整的项目解决方案&#xff0c;用于快速构建项目 3. 优点&#xff1a;大大提升前端项目的开发效率 4. 缺点&#xff1a;需要理解记…

强大的数据库DevOps工具:NineData 社区版

本文作者司马辽太杰&#xff0c; gzh&#xff1a;程序猿读历史 在业务快速变化与数据安全日益重要的今天&#xff0c;生产数据库变更管理、版本控制、数据使用是数据库领域的核心挑战之一。传统的解决方式往往采用邮件或即时通讯工具发起审批流程&#xff0c;再通过堡垒机直连数…

数字IC后端设计实现教程 |Innovus ICC2 Routing Pin Access Setting设置方法

默认情况下routing 引擎可以在标准单元可以打孔的任何地方&#xff08;via region&#xff09;打孔&#xff0c;甚至工具还会先拉出一块metal&#xff0c;然后再打孔过渡到高层。 随之工艺节点越做越小&#xff0c;标准单元内部的结构也越来越复杂。此时如果还沿用传统工艺的走…

珠算之珠心算观想算盘

一个好的观想算盘&#xff0c;会对珠心算学习效率的提高起到巨大的促进作用。 在传统的珠心算教学中&#xff0c;人们在观想算盘时&#xff0c;基本都是以自己手中所拿的实际算盘为参照模型进行观想的。由于市场上的算盘样式繁多&#xff0c;学生观想算盘时的参照算盘也是五花…

相册app

myphone 项目地址 &#xff1a; 相册app 技术点&#xff1a; electron mysql npm 图片展示 数据库表

idea超级AI插件,让 AI 为 Java 工程师

引言​ 用户可在界面中直接通过输入自然语言的形式描述接口的需求&#xff0c;系统通过输入的需求自动分析关键的功能点有哪些&#xff0c;并对不确定方案的需求提供多种选择&#xff0c;以及对需求上下文进行补充&#xff0c;用户修改确定需求后&#xff0c;系统会根据需求设…