sql相关函数学习 原

一、AVG函数

定义和用法:

AVG 函数返回数值列的平均值。NULL 值不包括在计算中。

语法:

SELECT AVG(column_name) FROM table_name

注意:NULL值不参与运算

二、COUNT()函数

定义和用法:

返回匹配指定条件的行数

COUNT(column_name)语法:

SELECT COUNT(column_name) FROM table_name

COUNT(*)语法:

SELECT COUNT(*) FROM table_name

COUNT(DISTINCT column_name) 返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name

注意:COUNT(*)与COUNT(1)的区别?

如果你的数据表没有主键,那么COUNT(1)比COUNT(*)快 
如果有主键的话,那主键(联合主键)作为COUNT的条件也比COUNT(*)要快 
如果你的表只有一个字段的话那COUNT(*)就是最快的啦 
COUNT(*) COUNT(1) 两者比较。主要还是要COUNT(1)所相对应的数据字段。 
如果COUNT(1)是聚索引,id,那肯定是COUNT(1)快。但是差的很小的。 
因为COUNT(*),自动会优化指定到那一个字段。所以没必要去COUNT(?),用COUNT(*),sql会帮你完成优化的

COUNT详解:

COUNT(*)将返回表格中所有存在的行的总数包括值为null的行,然而COUNT(列名)将返回表格中除去NULL以外的所有行的总数(有默认值的列也会被计入).
DISTINCT列名,得到的结果将是除去值为NULL和重复数据后的结果

三、FIRST()函数

定义和用法:

FIRST() 函数返回指定的字段中第一个记录的值。

注释:只有 MS Access 支持 FIRST() 函数

语法:

SELECT FIRST(column_name) FROM table_name

注意:

MySql的使用方式:

SELECT column_name FROM table_name
ORDER BY column_name ASC
LIMIT 1;

sqlServer的使用方式

SELECT TOP 1 column_name FROM table_name
ORDER BY column_name ASC;

Oracle的使用方式:

SELECT column_name FROM table_name
ORDER BY column_name ASC
WHERE ROWNUM <=1;

四、LAST()函数

定义和用法:

LAST() 函数返回指定的列中最后一个记录的值。

注释:只有 MS Access 支持 LAST() 函数

语法:

SELECT LAST(column_name) FROM table_name;

注意:

MySql的使用方式:

SELECT column_name FROM table_name
ORDER BY column_name DESC
LIMIT 1;

sqlServer的使用方式:

SELECT TOP 1 column_name FROM table_name
ORDER BY column_name DESC;

Oracle的使用方式:

SELECT column_name FROM table_name
ORDER BY column_name DESC
WHERE ROWNUM <=1;

五、MAX()函数

定义和用法:

MAX() 函数返回指定列的最大值。

语法:

SELECT MAX(column_name) FROM table_name;

注意:

对字符型数据的最大值,是按照首字母由A~Z的顺序排列,越往后,其值越大。当然,对于汉字则是按照其全拼拼音排列的,若首字符相同,则比较下一个字符,以此类推。

当然,对与日期时间类型的数据也可以求其最大/最小值,其大小排列就是日期时间的早晚,越早认为其值越小。

六、MIN()函数

定义和用法:

MIN() 函数返回指定列的最小值。

语法:

SELECT MIN(column_name) FROM table_name

注意:

同上!

七、SUM()函数

定义和用法:

SUM() 函数返回数值列的总数。

语法:

SELECT SUM(column_name) FROM table_name;

注意:

将本列中的所有数值相加的总和,如果没有数值,则为0

八、GROUP BY

定义和用法:

GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

语法:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

注意:

经常和sum()一起使用。

九、HAVING

定义和用法:

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。HAVING 子句可以让我们筛选分组后的各组数据。

语法:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;

注意:

用having就一定要和group by连用。

用group by不一有having (它只是一个筛选条件用的)。

十、UCASE()函数

定义和用法:

UCASE() 函数把字段的值转换为大写。

语法:

SELECT UCASE(column_name) FROM table_name;

注意:

sqlServer中用法:

SELECT UPPER(column_name) FROM table_name;

十一、LCASE()函数

定义和用法:

LCASE() 函数把字段的值转换为小写。

语法:

SELECT LCASE(column_name) FROM table_name;

注意:

sqlServer中用法:

SELECT LOWER(column_name) FROM table_name;

十二、MID()函数

定义和用法:

MID() 函数用于从文本字段中提取字符。

语法:

SELECT MID(column_name,start[,length]) FROM table_name;

注意:

Oracle数据库中没有此类函数,但是有一个subStr("列名",开始字符位置(起始值是 1),长度)功能相似

select substr(("列名",a,b) from <table_name>;

开始字符位置(起始值是 1)

十三、LEN()函数

定义和用法:

LEN() 函数返回文本字段中值的长度。

语法:

SELECT LEN(column_name) FROM table_name;

注意:

MySql中的为LENGTH():

SELECT LENGTH(column_name) FROM table_name;

十四、ROUND()函数

定义和用法:

ROUND() 函数用于把数值字段舍入为指定的小数位数。

语法:

SELECT ROUND(column_name,decimals) FROM table_name;
column_name 必需。要舍入的字段。
decimals 必需。规定要返回的小数位数。

注意:

十五、NOW()函数

定义和用法:

NOW() 函数返回当前系统的日期和时间

语法:

SELECT NOW() FROM table_name;

注意:

十六、FORMAT()函数

定义和用法:

FORMAT() 函数用于对字段的显示进行格式化。

语法:

SELECT FORMAT(column_name,format) FROM table_name;
column_name 必需。要格式化的字段。
format 必需。规定格式。

注意:

相关格式参照:http://www.w3school.com.cn/sql/func_date_format.asp

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