大多数SQL实现支持以下类型的函数
1.用于处理文本串(如删除或填充值,转换值为大写或小写)的文本函数。
2.用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数
3.用于处理日期和时间值并从这些值中提取特定成分的日期(如返回两个日期只差)和时间函数
拼接函数concat
concat函数可以多个列拼接成一个较长的列,各个串之间用逗号分隔
select concat(goods_name,'-',cat_id) from goods where goods_id >20
使用别名
上面的函数使用中,使用函授新计算的列名是没有名字的,它只是一个值。如果只是在SQL查询语句中查看一下结果,这样也可以。但是,一个未命名的列不能用于客户机应用中,因为客户机没有办法引用它。
所以为了解决这个问题,可以在sql中使用别名,别名用as关键字赋予。也可以省略as,之间在函数后输入列名
select concat(goods_name,'-',cat_id) as nameID
from goods where goods_id >20
select concat(goods_name,'-',cat_id) nameID
from goods where goods_id >20
文本处理函数
trim()函数: 去除列值的空格
Upper()函数: 将文本转换为大写
length()函数: 返将回文本串的长度
Lower()函数: 将文本转换为小写
substring()函数 返回子串
日期和时间处理函数
日期和时间采用相应的数据类型和特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。
data() : 返回日期时间的日期部分
date_format() :返回一个格式化的日期或时间串
now() : 返回一个日期的月份部分
Time() : 返回一个日期时间的时间部分
Year() : 返回一个日期的年份部分
month() : 返回一个日期的月份部分
注意:mysqld的日期格式为yyyy-mm-dd
数值处理函数
数值处理函数仅处理数值数据,
abs(): 返回一个数的绝对值
sqrt(): 返回一个数的平方根
聚集函数
聚集函数常用例子:
1.确定表中行数
2.获得表中行组的和
3.找出表列的最大值、最小值和平均值
avg(): 返回某列的平均值
count() :返回某列的行数
max() :返回某列的最大值
min() :返回某列的最小值
sum(): 返回某列值之和
avg()函数
avg()函数对表中行数计数并计算特定列值之和,求得该列的平均值,avg()可用来返回所有列的平均值,也可以用来返回特定列或行的平均值
select avg(shop_price) as avg_price from goods
注意:avg()忽略列值为NULL的行,同时只能确定特定数值列的平均值,且列名必须作为函数参数给出。
count()函数
count函数可以确定表中行的数目或符合特定条件的行的数目。
count()函数的两种使用方法
1.使用count(*)对表中行的数目进行计数,不管表中包含的是空值(NULL)还是飞空值。
2.使用count(column)对特定列中具有值得行进行计数,忽略NULL值
select count(*) from goods
select count(goods_name) from goods
max()函数与min()函数
max()返回指定列中的最大值,min()函数返回指定列中的最小值
select max(shop_price) from goods
select min(shop_price) from goods
sum()函数
sum()函数用来返回指定列值得和(总计)
select sum(shop_price) from goods
聚焦不同值(去重)
上面介绍的5个聚焦函数,都可以如下使用:
1.对所有的行执行计算,指定ALL参数或不给参数。
2.只包含不同的值,指定distinct参数。
例如下面的聚焦函数就会把相同的列值去掉,只会计算不同值得列
select avg(DISTINCT shop_price) as avg_price from goods
select count(DISTINCT goods_name) from goods
注意:当distinct应用到多个字段的时候,其应用的范围是其后面的所有字段,也就是这多个字段都相同时,才会被去重