MySQL内置函数

MySQL内置函数

  • 一.日期函数
    • 1. 日期函数的介绍及使用
    • 2. 日期函数样例
  • 二.字符串函数
    • 1. 字符串函数的介绍
    • 2. 字符串函数样例
  • 三.数学函数
  • 四.其他函数

一.日期函数

1. 日期函数的介绍及使用

MySQL内置函数_第1张图片

  • current_date()

获得年月日:

MySQL内置函数_第2张图片

  • current_time()

获得时分秒:

MySQL内置函数_第3张图片

将前二者结合:

MySQL内置函数_第4张图片

  • current_timestamp()

获得时间戳:

MySQL内置函数_第5张图片

相同作用的函数还有now():

MySQL内置函数_第6张图片

  • date函数

date(datetime),datetime可以是各种日期,也可以是上述的各类函数,最终得到的是所述内容中的日期部分。

常量

MySQL内置函数_第7张图片

各类函数:

MySQL内置函数_第8张图片

  • date_add(date, interval d_value_type)

在日期的基础上加日期:

interval后面的数值单位可以是:year、month、day。

MySQL内置函数_第9张图片

date也可以是函数的返回值

MySQL内置函数_第10张图片

  • date_add(date, interval d_value_type)

在日期的基础上减日期:

interval后面的数值单位可以是:year、month、day。

MySQL内置函数_第11张图片

date也可以是函数的返回值

MySQL内置函数_第12张图片

  • datediff(date1, date2)

l两个日期的差,即date1-date2,单位是天。

MySQL内置函数_第13张图片

当然,date一样可以是函数的返回值

MySQL内置函数_第14张图片

2. 日期函数样例

案例-1:

  • 创建一张表,记录生日
create table tmp(
id int primary key auto_increment,
birthday date
);
  • 插入数据
insert into tmp(birthday) values(current_date());
insert into tmp(birthday) values(date(current_timestamp()));

MySQL内置函数_第15张图片

案例-2:

  • 创建一个留言表
create table msg (
id int primary key auto_increment,
content varchar(30) not null,
sendtime datetime
);
  • 插入数据
insert into msg(content,sendtime) values('像风一样', now());
insert into msg(content,sendtime) values('致未来的我', now());
  • 显示所有留言信息,发布日期只显示日期,不用显示时间

image-20230729155041919

  • 请查询在2分钟内发布的帖子

MySQL内置函数_第16张图片

有两种方式去查询,即通过date_add()比较,或者通过date_sub比较。但都是一个道理。

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

MySQL内置函数_第17张图片

或者:

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

MySQL内置函数_第18张图片

二.字符串函数

1. 字符串函数的介绍

MySQL内置函数_第19张图片

  • charset(str)

获取emp表的ename列的字符集

MySQL内置函数_第20张图片

image-20230729163214197

  • concat(string2, […])

连接字符串

MySQL内置函数_第21张图片

  • instr(string,substring)

判断substring是否出现在string中,若找到,则返回匹配的起始位置。找不到则返回0

MySQL内置函数_第22张图片

  • ucase(string)

小写转大写

image-20230729164711619

  • lcase(string)

大写转小写

image-20230729164753493

  • left(string2, length)

从string2的左边起提取length个字符

MySQL内置函数_第23张图片

也有right,即从string2的右边起提取length个字符,就不一一演示了。

  • length(string)

求字符串长度

MySQL内置函数_第24张图片

  • strcmp(string1, string2)

比较string1与string2大小

MySQL内置函数_第25张图片

  • 去除空格

ltrim(string) :去除左空格

rtrim(string): 去除右空格

trim(string):去除字符串的左右空格。

MySQL内置函数_第26张图片

其余的函数就通过下面的具体样例演示:

2. 字符串函数样例

  • 获取emp表的ename列的字符集

MySQL内置函数_第27张图片

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

MySQL内置函数_第28张图片

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

MySQL内置函数_第29张图片

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

  • 将EMP表中所有名字中有S的替换成’上海’

MySQL内置函数_第30张图片

这种改变是在select时的改变,其并不会改变数据库的数据,仅仅是显示时的替换。

  • 截取EMP表中name字段的第二个到第三个字符

MySQL内置函数_第31张图片

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

先显示

MySQL内置函数_第32张图片

再拼接

MySQL内置函数_第33张图片

三.数学函数

MySQL内置函数_第34张图片

  • 绝对值
select abs(-100.2);

MySQL内置函数_第35张图片

  • 十进制转换二进制
select bin(100);

MySQL内置函数_第36张图片

  • 十进制转换十六进制
select hex(100);

MySQL内置函数_第37张图片

  • 任意进制之间转换

例如:将100从10进制转换成2进制

select conv(100, 10, 2);

MySQL内置函数_第38张图片

  • 向上取整
select ceiling(100.5);

MySQL内置函数_第39张图片

  • 向下取整
select floor(23.7);

MySQL内置函数_第40张图片

  • 格式化,保留小数位数

比如将3.1415926保留两位小数:

select format(3.1415926, 2);

MySQL内置函数_第41张图片

  • 产生随机数
select rand();

MySQL内置函数_第42张图片

  • 取模,求余
select mod(10, 3);

MySQL内置函数_第43张图片

ps:关于负数取模,这里不演示。

以上的函数都可以嵌套,即任意一个函数的返回值可以充当另一个函数的参数,如果这个函数存在参数,并且类型满足的话。

四.其他函数

  • user() 查询当前用户
select user();

MySQL内置函数_第44张图片

  • md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
select md5('admin');

MySQL内置函数_第45张图片

MySQL内置函数_第46张图片

产生的子串是等长的,这也就意味着,在select按照密码匹配的时候,就需要根据md5(‘密码’)映射出对应的32位字符,才可以匹配成功。

  • database()显示当前正在使用的数据库
select database();

MySQL内置函数_第47张图片

  • password()函数,MySQL数据库使用该函数对用户加密
select password('123');

相比md5,此函数更普遍受用。

MySQL内置函数_第48张图片

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

MySQL内置函数_第49张图片

扩展:

若数据库执行语句字段包含password字段,则我们在上翻下翻时就查不到历史对应的语句。

你可能感兴趣的:(MySQL,mysql,android,数据库)