使用者函式?那應該是自己定義的函式吧
常用的函式有
1、MySQL 提供幾個處理null的函式
1)、ifnull(expr1,expr2):如果expr1不為null,則返回expr1,否則返回expr2;
2)、nullif(expr1,expr2):expr1與expr2相等,則返回null,否則返回expr1;
3)、if(expr1,expr2,expr3):類似於三目運算子,expr1為true,返回expr2,否則返回expr3;
4)、isnull(expr1):判斷expr1是否為null,expr1為null,返回true,否則返回false。
2、MySQL case函式
CASE 函式是一個流程控制函式,作用同c++中switch語句。有如下兩種使用方法:
1)、用值比較
case value
when compareValue1 then result1
when compareValue2 then result2
……
else result
end
用value依次與各compareValue比較,相等則返回對應的result,並退出case函式。
2)、用條件判斷
case
when condition1 then result1
when condition2 then result2
各condition都為布林表示式,從上到下判斷,為true則返回對應的result,並退出case函式。
使用示例:
SELECT student_name,CASE
WHEN student_id<3 THEN ‘初級班’
WHEN student_id<=6 THEN "中級班"
ELSE ‘高階版"
END
FROM student_table;
說明:上面語句選擇student_name與student_id兩列,只是student_id用CASE 函式替換為對應的文字說明。
3、部分時間日期函式
1)、CURTIME():返回完整的時間型別值,如:’2016-08-10 22:13:30‘;
2)、CURDATE():返回當前日期,時間部分為0,如:’2013-08-10 00:00:00‘;
3)、ADDTIME(time1,time2):time1為time或datetime表示式,time2為time表示式,如:
addtime(’2016-08-10 22:20:00‘,’10:10:10")返回2016-08-11 08:30:10;
addtime(’2016-08-10 22:20:00‘,’1 10:10:10")返回2016-08-12 08:30:10;
addtime(’22:20:00‘,’10:10:10")返回32:30:10,所以只有時分秒時應注意相加後的值是否大於23:59:59!
注:上面的引數值都可帶微秒[.xxxxxx]。
4、部分字串函式
1)、LEFT(param,length):返回包含param左邊的length 個字元的字串。length 大於param 長度時返回整個param。
2)、RIGHT(param,length):返回包含param右邊length 個字元的字串。同理。
最大用處在於param 可以是選出的某個列的資料,如最基礎的用法:
select LEFT(e.name,5) from table1 e;
三、常用分組和組函式
常用組函式:
注:distinct:區別的。指定計算是否包含所有重複值。
1、avg([distinct|all]expr):計算多行expr的平均值,其中expr可以是變數、常量或資料列,但其型別必須是數值型;
2、count(*|[distinct|all]expr):計算多行的記錄數。expr同上,但資料型別可以是任意型別;
3、max(expr):計算多行expr的最大值,expr同count中;
4、min(expr);
5、sum([distinct|all]expr):計算多行expr的總和,expr可以是變數、常量或資料列,但資料型別必須是數值型。
group by 分組與having過濾:
語法:
#查詢結果按分組列不重複的顯示。
select * from tableName group by columnName1[,columnName2,……];
說明:對於MySQL 如果被分組的列對應的其它列有多個對應值,則只顯示第一條記錄的值。
使用者函式?那應該是自己定義的函式吧
常用的函式有
1、MySQL 提供幾個處理null的函式
1)、ifnull(expr1,expr2):如果expr1不為null,則返回expr1,否則返回expr2;
2)、nullif(expr1,expr2):expr1與expr2相等,則返回null,否則返回expr1;
3)、if(expr1,expr2,expr3):類似於三目運算子,expr1為true,返回expr2,否則返回expr3;
4)、isnull(expr1):判斷expr1是否為null,expr1為null,返回true,否則返回false。
2、MySQL case函式
CASE 函式是一個流程控制函式,作用同c++中switch語句。有如下兩種使用方法:
1)、用值比較
case value
when compareValue1 then result1
when compareValue2 then result2
……
else result
end
用value依次與各compareValue比較,相等則返回對應的result,並退出case函式。
2)、用條件判斷
case
when condition1 then result1
when condition2 then result2
……
else result
end
各condition都為布林表示式,從上到下判斷,為true則返回對應的result,並退出case函式。
使用示例:
SELECT student_name,CASE
WHEN student_id<3 THEN ‘初級班’
WHEN student_id<=6 THEN "中級班"
ELSE ‘高階版"
END
FROM student_table;
說明:上面語句選擇student_name與student_id兩列,只是student_id用CASE 函式替換為對應的文字說明。
3、部分時間日期函式
1)、CURTIME():返回完整的時間型別值,如:’2016-08-10 22:13:30‘;
2)、CURDATE():返回當前日期,時間部分為0,如:’2013-08-10 00:00:00‘;
3)、ADDTIME(time1,time2):time1為time或datetime表示式,time2為time表示式,如:
addtime(’2016-08-10 22:20:00‘,’10:10:10")返回2016-08-11 08:30:10;
addtime(’2016-08-10 22:20:00‘,’1 10:10:10")返回2016-08-12 08:30:10;
addtime(’22:20:00‘,’10:10:10")返回32:30:10,所以只有時分秒時應注意相加後的值是否大於23:59:59!
注:上面的引數值都可帶微秒[.xxxxxx]。
4、部分字串函式
1)、LEFT(param,length):返回包含param左邊的length 個字元的字串。length 大於param 長度時返回整個param。
2)、RIGHT(param,length):返回包含param右邊length 個字元的字串。同理。
最大用處在於param 可以是選出的某個列的資料,如最基礎的用法:
select LEFT(e.name,5) from table1 e;
三、常用分組和組函式
常用組函式:
注:distinct:區別的。指定計算是否包含所有重複值。
1、avg([distinct|all]expr):計算多行expr的平均值,其中expr可以是變數、常量或資料列,但其型別必須是數值型;
2、count(*|[distinct|all]expr):計算多行的記錄數。expr同上,但資料型別可以是任意型別;
3、max(expr):計算多行expr的最大值,expr同count中;
4、min(expr);
5、sum([distinct|all]expr):計算多行expr的總和,expr可以是變數、常量或資料列,但資料型別必須是數值型。
group by 分組與having過濾:
語法:
#查詢結果按分組列不重複的顯示。
select * from tableName group by columnName1[,columnName2,……];
說明:對於MySQL 如果被分組的列對應的其它列有多個對應值,則只顯示第一條記錄的值。