[MySQL][内置函数][日期函数][字符串函数][数学函数]详细讲解

2024-07-21 1077阅读

目录

  • 1.日期函数
    • 1.基础语法
    • 2.示例1
    • 3.示例2
    • 2.字符串函数
      • 1.基础语法
      • 2.示例
      • 3.数学函数
        • 1.基础语法
        • 2.示例
        • 4.其他函数

          1.日期函数

          1.基础语法

          [MySQL][内置函数][日期函数][字符串函数][数学函数]详细讲解

          • 日期时间在MYSQL中是区分开的
            • 日期:年月日
            • 时间:时分秒
            • 获得年月日
              select current_date();
               +----------------+
               | current_date() |
               +----------------+
               | 2024-01-24     |
               +----------------+
              
            • 获得时分秒
              select current_time();
               +----------------+
               | current_time() |
               +----------------+
               | 13:51:21       |
               +----------------+
              
            • 获得时间戳
              select current_timestamp();
               +---------------------+
               | current_timestamp() |
               +---------------------+
               | 2024-01-24 13:51:48 |
               +---------------------+
              
            • 在日期的基础上加日期
              select date_add('2024-01-14', interval 10 day);
               +-----------------------------------------+
               | date_add('2024-01-14', interval 10 day) |
               +-----------------------------------------+
               | 2024-01-24                              |
               +-----------------------------------------+
              
            • 在日期的基础上减去时间
              select date_sub('2024-01-24', interval 2 day);
              +----------------------------------------+
              | date_sub('2024-01-24', interval 2 day) |
              +----------------------------------------+
              | 2024-01-22                             |
              +----------------------------------------+
              
            • 计算两个日期之间相差多少天
              +-------------------------------+
              | datediff(now(), '1949-10-01') |
              +-------------------------------+
              |                         27143 |
              +-------------------------------+
              

              2.示例1

              • 创建一张表,记录生日,
                create table tmp(
                id int primary key auto_increment,
                birthday date
                );
                
              • 添加当前日期
                insert into tmp(birthday) values(current_date());
                mysql> select * from tmp;
                +----+------------+
                | id | birthday   |
                +----+------------+
                | 1  | 2024-01-24 |
                +----+------------+
                

                3.示例2

                • 创建一个留言表
                  mysql> create table msg (
                  	id int primary key auto_increment,
                  	content varchar(30) not null,
                  	sendtime datetime
                  );
                  
                • 插入数据
                  mysql> insert into msg(content,sendtime) values('hello1', now());
                  mysql> insert into msg(content,sendtime) values('hello2', now());
                  mysql> select * from msg;
                  +----+---------+---------------------+
                  | id | content | sendtime            |
                  +----+---------+---------------------+
                  | 1  | hello1  | 2024-01-24 14:12:20 |
                  | 2  | hello2  | 2024-01-24 14:13:21 |
                  +----+---------+---------------------+
                  
                • 显示所有留言信息,发布日期只显示日期,不用显示时间
                  select content,date(sendtime) from msg;
                  
                • 请查询在2分钟内发布的帖子
                  • 理解:以下两种写法意思相同
                    • msg_time > cur_time - 2
                    • msg_time + 2 > cur_time

                      ![[Pasted image 20240225181330.png]]

                      select * from msg where date_add(sendtime, interval 2 minute) > now();  
                      select * from msg where date_sub(now(), interval 2 minute)  
                      

                      2.字符串函数

                      1.基础语法

                      [MySQL][内置函数][日期函数][字符串函数][数学函数]详细讲解

                      • 注意:
                        • length函数返回字符串长度,以字节为单位
                        • 如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节
                          • 比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)

                            2.示例

                            • 获取emp表的ename列的字符集
                              select charset(ename) from EMP;
                              
                            • 要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”
                              select concat(name, '的语文是', chinese, '分,数学是', math, '分') as '分数' from student;
                              
                            • 求学生表中学生姓名占用的字节数
                              select length(name), name from student;
                              
                            • 将EMP表中所有名字中有S的替换成’上海’
                              select replace(ename, 'S', '上海'), ename from EMP;
                              
                            • 截取EMP表中ename字段的第二个到第三个字符
                              select substring(ename, 2, 2), ename from EMP;
                              
                            • 以首字母小写的方式显示所有员工的姓名
                              select concat(lcase(substring(ename, 1, 1)), substring(ename,2)) from EMP;
                              

                              3.数学函数

                              1.基础语法

                              [MySQL][内置函数][日期函数][字符串函数][数学函数]详细讲解

                              • 关于ceiling和floor
                                • C语言中的取整为**0向取证**
                                • ceiling是向+∞取整
                                • floor是向-∞取整

                                  2.示例

                                  • 绝对值
                                    select abs(-100.2);
                                    
                                  • 向上取整
                                    select ceiling(23.04);
                                    
                                  • 向下取整
                                    select floor(23.7);
                                    
                                  • 保留2位小数位数(小数四舍五入)
                                    select format(12.3456, 2);
                                    
                                  • 产生随机数
                                    select rand();
                                    

                                    4.其他函数

                                    • user() 查询当前用户
                                      select user();
                                      
                                    • **md5(str)**对一个字符串进行md5摘要,摘要后得到一个32位字符串
                                      select md5('admin')
                                      +----------------------------------+
                                      | md5('admin')                     |
                                      +----------------------------------+
                                      | 21232f297a57a5a743894a0e4a801fc3 |
                                      +----------------------------------+
                                      
                                    • **database()**显示当前正在使用的数据库
                                      select database();
                                      
                                    • **password()**函数,MySQL数据库使用该函数对用户加密
                                      select password('root');
                                      +-------------------------------------------+
                                      | password('root')                          |
                                      +-------------------------------------------+
                                      | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
                                      +-------------------------------------------+
                                      
                                    • ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
                                      • 类似C语言中的三目运算符 a?b:c --> (val1 == null) ? val2 : val1
                                        select ifnull('abc', '123');
                                        +----------------------+
                                        | ifnull('abc', '123') |
                                        +----------------------+
                                        | abc                  |
                                        +----------------------+
                                        1 row in set (0.01 sec)
                                        select ifnull(null, '123');
                                        +---------------------+
                                        | ifnull(null, '123') |
                                        +---------------------+
                                        | 123                 |
                                        +---------------------+
                                        1 row in set (0.00 sec)
                                        
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]