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

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