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

07-21 1075阅读

目录

  • 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购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]