一、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