相关推荐recommended
【MySQL】内置函数
作者:mmseoamin日期:2023-12-25

文章目录

  • 1. 内置函数
    • 时间函数
    • 时间函数 具体样例
    • 2. 字符串函数
    • 3. 数学函数
      • 向上取整和向下取整
      • 4. 其他函数

        1. 内置函数

        时间函数

        【MySQL】内置函数,第1张
        【MySQL】内置函数,第2张

        current_date() 表示 当前日期(年月日)


        【MySQL】内置函数,第3张

        current_time() 表示 当前时间(时分秒)


        【MySQL】内置函数,第4张

        current_timestamp() 表示 当前时间戳(以年月日、时分秒的形式表现出来)


        【MySQL】内置函数,第5张

        now() 表示 获取当前日期时间


        【MySQL】内置函数,第6张

        date(datetime) 在设定的时间中 提取对应的日期


        【MySQL】内置函数,第7张

        将 now函数 放入 date中 ,相当于输入当前 日期时间

        可直接输出 当前日期 ,达到 与current_date 相同的效果


        【MySQL】内置函数,第8张

        在日期基础上加(时间或日期)

        date_add(date,interval d_value_type) (interval后的数值单位 可以是 year minute second day)

        输入 select date_add(‘2023-02-25’,interval 10 day);

        表示 在 2023-02-25 日期的基础上 添加 10 天

        最终 输出 2023-03-07


        【MySQL】内置函数,第9张

        在日期基础上减去(时间或日期)

        date_sub(date,interval d_value_type) interval后的数值单位 可以是 year minute second day

        输入 select date_sub(now(), interval 10 minute);

        表示 在 当前日期时间 基础上 减去 10分钟

        最终 输出 2023-10-27 18:16:39


        【MySQL】内置函数,第10张

        datediff(date1,date2)

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

        用date1减去date2 ,返回正天数

        若date2大,则返回负天数


        时间函数 具体样例

        【MySQL】内置函数,第11张

        创建一张表 tmp,其内部包含 约束为主键 并且自增长 的 id 、 不为空的birthday


        【MySQL】内置函数,第12张

        由于id 为自增长,所以默认从1开始

        插入 日期 ‘2001-02-25’ 和 ‘1990-01-01’ 以及 当前日期 都插入到 tmp表中


        【MySQL】内置函数,第13张

        插入当前时间、当前时间戳时,发现都显示为 当前日期

        是因为 每个函数 都是带有 对应的日期的,但是在使用函数时 只会显示对应的功能


        【MySQL】内置函数,第14张

        所以为了更清楚的表示想要插入的数据

        所以使用 date 提取对应的日期


        【MySQL】内置函数,第15张

        再次创建一张表msg,内部包含 约束为主键 自增长的id 、 不为空的评论内容、评论时间


        【MySQL】内置函数,第16张

        将 数据 插入到 msg表 中


        查询 2分钟以内 发布的内容

        【MySQL】内置函数,第17张

        用 msg_time 表示 表中时间

        用 curr_time 表示 当前时间

        消息可分为 在2分钟以内 和 在2分钟以外

        msg_time > curr_time-2 即 msg_time+2 > curr_time 表示表中时间在2分钟以内


        【MySQL】内置函数,第18张

        输入 select content,sendtime from msg where sendtime > date_sub(now(),interval 2 minute);

        即可以查找到 在当前时间 2分钟以内的数据内容

        2. 字符串函数

        【MySQL】内置函数,第19张
        【MySQL】内置函数,第20张

        输入 select charset(‘abc’); 发现对应的编码格式为utf8


        【MySQL】内置函数,第21张

        输入 sekect concat(‘a’,‘b’); 将字符a与字符b连接起来,形成ab


        【MySQL】内置函数,第22张

        instr(string,substring) 返回substring 在string中出现的位置,没有返回

        判断bc在abc中的位置,abc字符串的起始位置为1,由于第二个字符b处 就检测到bc存在,所以返回b所在位置 2


        【MySQL】内置函数,第23张

        使用 ucase 将abc 字符串 从小写转为大写


        【MySQL】内置函数,第24张

        使用 lcase ,将abc 字符串 从 大写转为 小写


        【MySQL】内置函数,第25张

        left(string,length) 从string字符串的左边起 取length个字符

        如:在abcdef字符串中 取4个字符,成为abcd


        【MySQL】内置函数,第26张

        length(string) 求字符串的长度

        如:abcde字符串 长度为5


        【MySQL】内置函数,第27张

        处于uft8编码格式下,一个汉字看作三个字节

        abc 三个字符各占用一个字节

        所以最终返回9个字节


        【MySQL】内置函数,第28张

        将当前表中 名字 带有s的 替换为上海


        【MySQL】内置函数,第29张

        replace (str,search_str,replace_str) 即 将str中的search_str 替换成 replace_str

        输入 select replace(ename,‘S’,‘上海’) from emp; 将emp表中的ename 含有S的 全部替换成上海


        【MySQL】内置函数,第30张

        substring(str,postion,length) 即从str的postion开始 取length个字符

        输入 select substring(ename,2,2) from emp; 截取emp表中ename字段的第二个到第三个字符

        由于字符串下标从1开始,所以第2个字符 就要从2开始,共截取两个字符


        【MySQL】内置函数,第31张

        ltrim(string) 去除左侧的空格


        【MySQL】内置函数,第32张

        rtrim(string) 去除右侧的空格


        【MySQL】内置函数,第33张

        trim(string) 将左侧和右侧的空格都去除

        3. 数学函数

        【MySQL】内置函数,第34张
        【MySQL】内置函数,第35张

        abs(number) 对一个数取绝对值


        【MySQL】内置函数,第36张

        bin(decimal_number) 将一个十进制数 转换为 二进制


        【MySQL】内置函数,第37张

        hex(decimal_number) 转化为 十六进制


        【MySQL】内置函数,第38张

        conv(number,from_base,to_base) 将一个数 从一个进制 转换为 另一个进制

        如:将10从10进制 转化为2进制 变为 110


        【MySQL】内置函数,第39张

        format(number,decimal_places) 格式化,保留小数位数

        如:2.156保留位小数,通过四舍五入 ,输出 2.16


        【MySQL】内置函数,第40张

        rand() 返回随机浮点数 [ 0.0,1.0 )

        虽然rand函数范围是0到1,但可在后面乘以一个数,如乘以10,则表示范围为0到10


        【MySQL】内置函数,第41张

        mod(number,denominator) 取模

        如:5%2=1 余1,则输出1


        向上取整和向下取整

        【MySQL】内置函数,第42张

        丢弃掉小数点后面的数据的方式 称为 0向取整


        【MySQL】内置函数,第43张

        只要有小数部分,就向变大的方向取整 称为 向上取整


        【MySQL】内置函数,第44张

        ceiling(number) 向上取整

        如 输入 5.1 ,进行向上取整,则输出 6


        【MySQL】内置函数,第45张

        只要有小数部分,就向变小的方向取整 称为 向下取整


        【MySQL】内置函数,第46张

        floor(number) 向下取整

        如:输入 4.9 进行向下取整,输出4


        4. 其他函数

        【MySQL】内置函数,第47张

        输入 select user() 查询当前用户

        root为用户名 , localhost为用户主机


        【MySQL】内置函数,第48张

        输入 select database() 查询当前在那个数据库中


        【MySQL】内置函数,第49张

        在数据库中,密码是不能明文保存的,所以不能直接插入

        需要借助 md5(str) ,对str字符串进行md5摘要,摘要后得到32位字符串


        【MySQL】内置函数,第50张

        将密码 通过md5 进行插入,显示一个32位字符串


        【MySQL】内置函数,第51张

        输入 select password( 密码) ,mysql 会使用 password 函数 帮助形成 加密后的结果


        【MySQL】内置函数,第52张

        ifnull(val1,val2) 如果val1为null,则返回val2 否则返回 val1的值

        如:ab 不为空,则返回ab