MySQL数据库中常用的一些函数

数据库函数

mysql 数据库中为我们提供了一些常用的函数
mysql 中的函数不同于C语言中的函数, mysql 中的函数只用于数据处理,不会进行命令操作

函数使用规则

函数由于不进行命令操作,只进行数据处理,通常是通过 select语句进行输出的高级语言都有自己的库函数,数据库也不例外,在数据库中也提供了一些用于实现特定功能的函数。

聚合函数

在数据库函数中,聚合函数是我们最常用的一类。所谓的聚合,就是对一组值进行组合计算,返回单个值。
1.count
计数函数,对元组或者属性计数。
一般格式:count(属性名)。
select count() from <表名>;
是对整个表的元组进行计数
select count(属性名) from 表名 where 条件表达式;
count 支持条件计数,只计算有效值,不计算null值
2.max
求最大值函数,查询字段中的最大的数。
一般格式:max(属性名)
select max(属性名) from 表名 [where 条件表达式];
3.min
求最小值函数,查询字段中的最小的数。
一般格式:min(属性名)
select min(属性名) from 表名 [where 条件表达式];
4.avg
求平均值函数,查询字段中所有数的平均值。
一般格式:avg(属性名)
select avg(属性名) from 表名 [where 条件表达式];
5.sum
求和函数,查询属性中所有数的和。
一般格式:sum(属性名)
select sum(属性名) from 表名 [where 条件表达式];
除了通过函数计算还能直接用运算符计算
select 属性名1*2,属性名2+属性名3 from 表名;

数学函数

1.abs
返回X的绝对值
格式: abs(x)

select abs(-10),abs(12);

2.round
四舍五入函数。
一般格式:round(数值类型[,精确位数]);
select round(1234.56);
不加精确位数默认精确到整数位
select round(123.456,2);
加上精确位数就保留多少位小数
3.MOD
mod(a,b) a除以b的余数
4.rand
获取随机数,随机数的范围在0~1之间,生成小于1的浮点小数
生成范围在0~9之间的数据

select rand()*10;

格式: rand()

三角函数

三角函数中的 正弦 函数
sin30度shi 2/1
格式: sin(radin)
注意: radin 是弧度制,而不是角度

## 弧度转角度公式 
#PI == 180
radin=PI/180*angle;

除此之外还有其他的三角函数

cos(radin) 余弦
tan(radin) 正切
ctan(radin) 余切

1.PI
数据库提供了直接获取 PI 值的函数
PI() 求圆周率
2.power
求次方函数
一般格式:power(底数,指数);
select power(2,3); # 求2的3次方的值
可以用pow函数代替power函数

select pow(2,3);

求次方根(开方)

pow(9,1/2); pow(4,0.5) #只需要把指数改一下

日期时间函数

直接从系统获取日期和时间,不需要通过表格获取
1.now
求当前的日期和时间。
一般格式:now()。

 select now();

返回一个 datetime 类型的数据
2.date
求出日期的格式的函数
一般格式:date(日期时间类型的属性名)。

select date(birthday) from student;

3.time
求时间函数的格式的函数。
一般格式:time(日期时间类型的属性名)

select time(birthday) from student;

4.date_format
时间日期类型转字符串类型函数。
一般格式: date_format(日期时间类型,格式字符串)

/*
%Y 年 %y 年(保留后2位) 
%M 月份英文单词 %m 数字月份 
%d 日期 #D 数字th 
%H 时(24小时制) %h 12时制 
%i 分 
%s 秒 
*/
select date_format(now(),'%Y%m%d:%H%i%s'); 

注意:大小写格式会有不一样的输出

字符处理函数

1.upper
小写字母转大写字母函数。
一般格式:upper(字符型属性名);

select upper('abc'); 

也可用 ucase() 函数代替 select ucase(‘abc’);
2.lower
大写字母转小写字母函数。
一般格式:lower(字符型属性名);

select upper('ABC'); 

也可用 lcase 函数代替,如: select lcase(‘ABC’);
3.substring
提取字串函数,以给定的参数求字符串中的一个子串。
mysql 中,字符串数据下标从1开始
格式: substring(字符串,start,length);

## 要被提取的字符串 
## start 开始提取的位置 
## end 提取的数量 
subsring("string",start,end);

从字符串中第start个字符开始取出长度为length的字符串。

select substring('abc123@#$',4,3);# 结果为123 

也可以用mid函数代替,如: select mid(‘abc123@#$’,4,3);
4.concat
字符串拼接函数
格式: concat(字符串,字符串....)
char_length() 求字符串长度
5.insert
字符串 string2 替换 string1 的 x 位置开始长度为 len 的字符串

/* 
string1 准备替换的字符串 
x 开始位置 
len 替换的长度 如果是0,就是从该位置进行插入 
string2 替换的字符串 
*/
insert(string1,x,len,string2)

6.locate
从字符串 s 中获取 s1 的开始位置
locate(substr,str) :返回子串 substr 在字符串 str 第一个出现的位置,如果 substr 不是在 str`里面,返回0

 locate(s1,s)

7.length
length(string) :返回字符串 string 的长度。
8.ASCII
ASCII( str )
返回字符串 str 字符中的ASCII代码值。如果 str 是空字符串,返回0。
如果 str 是NULL,返回NULL。

 select ASCII('a');

注意:只能显示一个字符的 ASCII 码值

高级函数

1.md5
不可逆的加密验证函数
2.bin
bin(x) 返回二进制编码
3.binary
binary(s) 将字符串 s 转换为二进制字符串
4.database
返回当前数据库名

分组查询

对查询结果进行分组。
分组关键字:group by
一般格式:

select 属性名1,属性名2,,属性名n 
from 表名 group by 属性名(1~n) [having 条件表达式];

注意:分组过后不能用where进行条件筛选,需要用having
where:从数据源去掉不符合搜索条件的数据
having:在分好的组中去掉每组不符合条件的数据

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章