内置函数一般放在SQL语句里帮助我们执行一些逻辑.
函数名称 | 描述 |
---|---|
current date() | 获取当前日期 |
current time() | 获取当前时间 |
current_timestamp() | 获取当前时间戳 |
date(datetime) | 返回 datetime 参数的日期部分 |
date_add (date, interval dvalue_type) | 在date中添加日期或时间,interval后的数值单位可以是:year minute second day |
date_sub (date, interval dvalue_type) | 在date中减去日期或时间,linterval后的数值单位可以是:year minute second day |
datediff (datel, date2) | 两个日期的差,单位是天 |
now() | 当前日期时间 |
使用例子:
案例1:创建一张表,记录生日信息
案例2:创建一个留言表
需求1:显示所有留言信息,发布日期只显示日期,不用显示时间 -> 很容易想到要用date函数
需求2:请查询在10分钟内发布的帖子
做法:给发布时间添加上10分钟,然后和当前时间做比较,如果>=当前时间,说明就是10分钟内发布的
所以此时需要使用:date_add 和now函数
字符串函数 | 说明 |
---|---|
charset ( str ) | 获取字符串字符集 |
concat ( string2 [, ⋯] ) | 拼接字符串 |
length ( string ) | 返回字符串的字节数 |
replace ( str, search_str, replace_str ) | 将字符串中的 replace_str 替换 search_str |
substring ( str, position [, length] ) | 从字符串的postion位置开始截取length个字符 |
ucase ( string ) | 转换成大写 |
lcase ( string ) | 转换成小写 |
instr ( string, substring ) | 返回substring在string中出现的位置,没有返回0 |
left ( string, length ) | 从string中的左边起截取length个字符 |
strcmp ( string1.string2 ) | 逐字符比较两字符串大小 |
ltrim ( string ) rtrim ( string ) trim ( string ) | 去除前空格或后空格 |
例子
length函数返回字符串长度,以字节为单位,如果是多字节字符则计算多个字节数, 如果是单字节字符则算作一个字节,比如: 字母,数组算作一个字节,中文表示多个字节数(与字符集编码有关)
案例:
1)截取EMP表中ename字段的第二个到第三个字符: select substring(ename, 2, 2), ename from emp;
2)以首字母小写的方式显示所有员工的姓名:
数学函数 | 描述 |
---|---|
abs ( number ) | 绝对值函数 |
bin ( decimal number ) | 转换二进制 |
hex ( decimalNumber ) | 十六进制 |
conv ( number, from_base, to_base ) | 指定进制转换 |
ceiling ( number ) | 向上取整 |
floor ( number ) | 向下取整 |
format ( number, decimal_places ) | 格式化,保留小数位数 |
rand () | 返回随机浮点数,范围 [ 0.0, 1.0 ) |
mod ( number, denominator ) | 取模,求余 |
例子:
区分向上取整和向下取整
向上取整: 向数轴中向正无穷方向取整 向下取整:向数轴中向负无穷方向取整
其他函数 | 描述 |
---|---|
user () | 返回当前用户 |
md5 ( string ) | 对字符串进行md5摘要,摘要后得到一个32位字符串 |
database () | 返回当前所在数据库 |
password ( string ) | 对内容进行加密 |
ifnull ( string1, string2 ) | 如果string1不为null则返回string1,否则返回string2,如果两个都是null,返回null |
md5形成的是定长的字符串, 同样的内容形成的摘要是一样的
一般在mysql中,保存用户密码不要出现明文,使用摘要的好处:
刚注册账号的时候,数据库把密码加密成定长字符串保存到数据库中,之后再次登录只需要再次加密用户输入的密码与数据库中存的字符串比较即可判断密码是否正确