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

06-02 1685阅读

绪论​

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)
    BEGIN
        SELECT name, CONCAT(name, '@example.com') FROM users WHERE id = user_id;
    END //
    DELIMITER ;
    

总结:

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


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


2. 日期相关的函数

2.1 获取当前日期:current_date

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

2.2 获取当前时间:current_time

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

2.3 获取当前时间戳:current_timestamp

是日期 + 时间 (并不是秒数 )

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

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

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

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

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

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

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 + ...
    

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

    并且最终它还会按照日历进行计算

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

    同理:

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

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

    使用前者的日期 减去 后者的日期

    具体如下:

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

    实操记录生日

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

    插入时间:

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

    插入数据:

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

    插入的细节:

    • 其中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;
      

      实现类似留言板的功能(评论),当你发表言论后会记录你到内容和时间。

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

      3. 字符串相关函数

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

      select charset(sal) from emp;
      

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

      还能直接查看(表是提前配置好的)

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

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

      将传递进来的参数都看成字符串,然后拼接。

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

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

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

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

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

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

      同样的还有对应的 right(string,len) 从右端开始往左取len个字符

      具体操作如下图:

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

      还剩一些如下图:

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

      3.6 concat 函数实操

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

      其中可以使用select进行筛选

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

      但发现并不太优雅,现在需要通过全字符串的形式展示:

      那么就是使用前面的concat函数:将获取的数据拼接成字符串

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

      3.7 获取字符串长度 length

      求学生表中学生姓名占用的字节数

      其中length求的是字节数,当求字符长度时,如汉字时就会算出来汉字所占的字节数Linux下学【MySQL】常用函数助你成为数据库大师~(配sql+实操图+案例巩固 通俗易懂版~)

      其中下图:汉字两个共6byte(一个汉字3byte),三个数字各占1字节(3byte)

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

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

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

      先查找查找到后进行替换

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

      此处的替换仅仅只是查看,并不是真正的在数据进行替换

      3.9 字符串截取 substring

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

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

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

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

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

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

      ltrim:只去除最开始的(最左边的)、rtrim:只去除最后的(右边的)

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

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

      4. 数学函数

      4.1 abs 取绝对值

      select abs(-12);
      

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

      4.2 bin 转二进制

      简单就不写了

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

      4.3 hex 转十六进制

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

      3.3 conv 进制转换

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

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

      4.5 format 格式化,保留小数

      select(number,dicimal_places);
      

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

      4.7 mod 取模

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

      4.8 random生成随机数

      生成的数是从 0.0 ~ 1.0,当我们想要生成指定范围的我们就直接 * 10n即可实现(如 * 10的话就是 0 ~ 10)

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

      其中还能嵌套函数使用,当我们将format和rand嵌套使用的话就能生成整数的随机数:

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

      4.9 ceiling 向上取整

      0向取整:

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

      那么向上取整的意思是:对于任何浮点数来说都按大取整(为啥叫向上取整见下图:)

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

      取整情况为:3.1 取整为 4、-3.9 取整为 -3

      实操图如下:

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

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

      反之就是向下取整,就是将所有小数按小的方向取整

      再如上图举例:-3.1 取整为 -4,3.9 取整为 3

      实操如下图:

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

      5. 一些其他函数

      5.1 查看当前用户 user

      select user;
      

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

      5.2 database查看当前数据库

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

      5.3 md5 加密

      常用于加密密码:

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

      创建一个表用于测试:

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

      也就是说当完成在插入过程中对密码使用md5进行加密然后再插入:

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

      当我们查询时,因为内部存储的密码是md5加密的,所以查询时判断的密码也需要进行md5,这样才能正常的查询到。

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

      5.4 password 设置密码

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

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

      5.5 ifnull(val1,val2)

      如果val1为空就返回val2,若val1不为空则就直接返回val1了

      也非常好理解就不写sql了,直接上实操图:

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


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

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

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

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

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码