百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql数据库函数学习笔记
分享文章到:

mysql数据库函数学习笔记

发布时间:01/15 来源: 浏览: 关键词:
mysql数据库函数包括了9种常用的函数了,包括有:数学函数、聚合函数、字符串函数、日期时间、加密函数、控制流函数等等,下面小编为各位整理一些

数学函数

由于MySQL包含了一系列的算术操作,所以关系型数据库管理系统支持很多数学函数

ABS(x);//返回x的绝对值
ACOS(x);//返回x(弧度)的反余弦值
ASIN(x);//返回x(弧度)的反正弦值
ATAN(x);//返回x(弧度)的反正切值
CEILING(x);//返回大于x的最小整数值
COS(x);//返回x(弧度)的余弦值
COT(x);//返回x(弧度)的余切
DEGREES(x);//返回弧度值x转化为角度的结果
EXP(x);//返回值e(自然对数的底)的x次方
FLOOR(x);//返回小于x的最大整数值
GREATEST(x1,x2,x3...);//返回集合中最大的值
LEAST(x1,x2,x3,,,);//返回集合中最小的值
LN(x);//返回x的自然对数
LOG(x,y);//返回x的以y为底的对数
MOD(x,y);//返回x/y的模(余数)
PI();//返回pi的值(圆周率)
POW(x,y)或者POWER(x,y);//返回x的y次幂
RAND();//返回0到1内的随机数
RADIANS(x);//返回角度x转化为弧度的结果
ROUND(x,y);//返回参数x的四舍五入的有y位小数的值
SIGN(x);//返回代表数字x的符号的值
SQRT(x);//返回x的开方
SIN(x);//返回x(弧度)的正弦值
TAN(x);返回x(弧度)的正切值
TRUNCATE(x,y);//返回数字x截短为y位小数的结果

看下面一些例子

select ABS(-123);//取绝对值,结果为123
select GREATEST(100,88,33,156);//获取一组数中最大值,结果为156

练习

计算-34的绝对值,计算3.45234的四舍五入的值,保留2位小数

聚合函数

MySQL有一组函数是特意为求和或者对表中的数据进行集中概括而设计的,这些函数经常用在包含group by从句的select查询中,当然,它们也可以用于无group的查询

AVG(col);//返回指定列的平均值
COUNT(col);//返回指定列中非null值的个数
MIN(col);//返回指定列的最小值
MAX(col);//返回指定列的最大值
SUM(col);//返回指定列的所有值之和
STD(col)或STDDEV(col);//返回指定列的所有值的标准偏差
VARIANCE(col);//返回指定列的所有值的标准方差
GROUP_CONCAT(col);//返回由属于一组的列值连接组合而成的结果
这一组函数中,最常用到的是COUNT()函数,计算出结果集中至少包含一个非null的值的行数

select count(*) from members;

MIN()和MAX()函数返回数字集的最小或最大值

select min(quantity) from inventory;//返回最小值
select max(return) from investments;返回最大值

练习

删除data数据表,新建data表,字段为score,添加两条数据,分别为29和34,计算平均值和最小值


字符串函数

因为MySQL数据库不仅报含数字数据,还包含字符串,因此MySQL有一套为字符串操作而设计的函数。

通过length()函数可以获得一个字符串的长度

select length('aasdfgh');//结果为7

通过trim()函数可以让我们在剪切值时指定去除格式,还可以决定是从字符串的首部,尾部,两边剪切。

select trim(' red alter ');//去掉两边空格
select trim(leading '!' from '!!!error!!!');//去掉首部“!”符号

concat()函数将提供的参数连接成一个字符串

select concat('red','hot');//结果为redhot

这里只是简单列出几个常用的字符串函数,更多函数,请查询MySQL相关文档。


日期时间函数

MySQL提供了很多处理日期时间的函数,这里我们只是选择一些常用的讲述。

使用now()函数获取当前的日期和时间,将以YYYY-MM-DD HH:MM:SS的格式返回当前的日期和时间

select now();//返回当前时间

单独获取日期和时间,可以使用curdate()和curtime()函数

select curtime();//当前时间,格式为 HH:MM:SS
select curdate();//当前日期,格式为 YYYY-MM-DD

week()函数返回指定的日期是一年的第几个星期,而yearweek()函数返回指定的日期是哪一年的哪一个星期

select week('2004-03-01');//结果为9
select yearweek(20040301);//结果为200409

更多日期时间函数,请参考MySQL官方文档

加密函数

MySQL特意设计了一些函数对数据进行加密。

AES_ENCRYPT(str,key);//返回使用密钥key对字符串str利用高级加密标准算法加密后的结果
AES_DECRYPT(str,key);    //返回使用密钥key对字符串str利用高级加密标准算法解密后的结果
DECODE(str,key);//使用key作为密钥解密加密字符串str
ENCRYPT(str,salt);//使用UNIX crypt()函数,用关键词salt加密字符串str
ENCODE(str,key);//使用key作为密钥加密字符串str
MD5();//计算字符串str的MD5校验和
PASSWORD(str);//返回字符串str的加密版本
SHA();//计算字符串str的安全散列算法(SHA)校验和
password()函数用来创建一个经过加密的密码字符串,它适合于插入到MySQL的安全系统。这个加密过程是不可以逆转的, 和UNIX密码加密使用不同的算法

如果愿意的话,可以通过ENCRYPT()函数使用UNIX crypt()系统加密字符串,ENCRYPT()函数接收要加密的字符串 和(可选的)用于加密过程的salt(一个可以唯一确定口令的字符串,就像钥匙一样)。

还可以使用ENCODE()函数和DECODE()函数来加密和解密字符串,ENCODE()有两个参数:被加密的字符串和作为加密基础的密钥:

insert into users values('','john',ENCODE('asdfasdf','secret_key'));
select * from users;
select id,uname,DECODE(upass,'secret_key') from users;


控制流函数

MySQL提供了4个函数是用来进行条件操作的。这些函数实现了sql的条件逻辑,允许开发者将一些应用程序业务逻辑转换到 数据库后台。

case where[test1] then[result1] ... else[defalut] end;//如果testN为真,则返回resultN,否则返回default
case[test] where[val1] then[result1]...else[default] end;//如果test和valN为真,则返回resultN,否则返回default

if(test,t,f);//如果test为真,返回t,否则返回f
ifnull(arg1,arg2);//如果arg1不是空,返回arg1,否则返回arg2
nullif(arg1,arg2);//如果arg1=arg2返回null,否则返回arg1

这些函数的第一个是ifnull()函数,它有两个参数,并且对第一个参数进行判断。如果第二个参数不是null, 函数就会向调用者返回第一个参数,如果是null,返回第二个参数。

select ifnull(1,2),ifnull(null,10),ifnull(4*null,'false');//结果为1,10,false

nullif()函数将会检验提供的两个参数是否相等,如果相等,则返回null,不相等,返回第一个参数。

if()函数有三个参数,第一个是要被判断的表达式,如果表达式为真,if()函数会返回第二个参数,为假,返回第三个参数。 if()函数在只有两种结果时才适合使用


格式化函数

MySQL还有一些函数是特意为格式化数据设计的

date_format(date,fmt);//依照字符串fmt格式化日期date的值
format(x,y);//把x格式化为以逗号隔开的数字序列,y是结果的小数位数
inet_aton(ip);//返回ip地址的数字表示
inet_ntoa(num);//返回数字所代表的ip地址
time_format(time,fmt);//依照字符串fmt格式化时间time值
其中最简单的是format()函数,它可以把大的数值格式化为以逗号间隔的易读的序列。format()的第一个参数是被 格式化的数据,第二个参数是结果的小数位数

select format(999999999868595049,2),format(-4512,6);//结果为999,999,999,82;-4.512.000000

更多用法,请查阅相关文档

练习

请把'19920202'按照'yyyy-mm-dd'的形式格式化,格式为'%Y-%m-%d'

数据转换函数

为了进行数据类型转换,MySQL提供了cast()函数,它可以把一个值转化为指定的数据类型

通常情况下,当使用数值操作时,字符串会自动的转化为数字

select 1+'99';//结果为100
select 1+cast('99' as signed);//结果为100

我们可以强制许多日期和时间函数[包括now(),curtime()和curdate()函数],把它们返回的值作为一个数而不是字符串输出 ,只需要在数字的环境中使用这些函数或者把它们转化为数字

select cast(now() as signed integer),curdate()+0;


系统信息函数

MySQL还具有一些特殊的函数用来获得系统本身的信息

database();//返回当前数据库名称
benchmark(count,expr);//将表达式expr重复运行count次
connection_id();//返回当前客户的连接id
found_rows();//将最后一个select查询(没有以limit进行限制结果)返回的记录行数返回
get_lock(str,dur);//获取一个由字符串str命名的并且有dur秒延时的锁定
is_free_lock(str);//检查以str命名的锁定是否释放
last_insert_id();//返回由该系统自动产生的最后一个auto increment id的值
master_pos_wait(log,pos,dur);//锁定主服务器dur秒直到从服务器与主服务器的日志log指定的位置pos同步
release_lock(str);//释放由字符串str命名的锁定
user()/system_user();//返回当前登录用户名
version();//返回MySQL服务器的版本
database(),user()和version()函数分别可以返回当前所选数据库,当前用户和MySQL版本的信息:

select database(),version(),user();

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有4人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板