MySQL資料庫應用(十一)—MySQL資料庫函數的操作(1):數學函數
SQL語法預覽:
使用函數:【select 函數名(參數1,參數2…);】
詳解:
一、 MySQL資料庫的分類
MySQL提供了豐富的函數,在進行資料庫管理以及數據的查詢和操作時將會經常用到這些函數。MySQL中的函數從功能方面主要分為數學函數、字元串函數、日期和時間函數、條件判斷函數、系統信息函數和加密函數等。本期將分類介紹不同函數的使用方法。
語法結構:select 函數名(參數1,參數2…);
二、 數學函數
數學函數主要用來處理數值數據,主要的數學函數有絕對值函數、三角函數(包括正弦函數、餘弦函數、正切函數和餘切函數等)、對數函數、隨機函數等。在產生錯誤時,數學函數將會返回null。
1. 絕對值函數ABS(x)和返回圓周率的函數PI()
ABS(x)函數返回x絕對值。PI()函數返回圓周率π的值。默認顯示的小數位數是6位。
案例:求11、0、-11.1和111的絕對值;返回圓周率π。SQL語句:
命令語句:
select ABS(11), ABS(-11.1), ABS(111);
select PI();
執行結果如下:
正數和零的絕對值是其本身,11的絕對值為11,0的絕對值為0;負數的絕對值為其相反數,-11.1的絕對值是11.1,-111的絕對值是111。結果顯示返回了6位小數。
2. 平方根函數SQRT(x)和求余函數MOD(x,y)
SQRT(x)函數返回非負數的二次平方根。
MOD(x,y)函數返回x被y除後的餘數,MOD()對於帶有小數部分的數值也起作用,返回除法運算後的精確餘數
案例:求9、19和-29的二次平方根;對MOD(56,8)、MOD(123,10)、MOD(23.3,3)進行求余運算。
命令語句:
select SQRT(9), SQRT(19), SQRT(-29);
select MOD(56,8), MOD(123,10), MOD(23.3,3);
執行結果如下:
9的平方根是3;19的平方根約等於4.35889894354067,結果保留14位小數;負數沒有平方根,所以-29返回的結果為NULL。
3. 獲取整數的函數CEIL(x)、CEILING(x)和FLOOR(x)
CEIL(x)函數和CEILING(x)函數的意義相同,返回不小於x的最小整數值,返回值轉化為一個BIGINT;
FLOOR(x)函數返回不大於x的最大整數值,返回值轉化為一個BIGINT。
案例:使用CEILING()函數返回最小整數;使用FLOOR()函數返回最大整數。
命令語句:
select CEILING(-6.66), CEIL(6.66);
select FLOOR(-6.66), FLOOR(6.66);
執行結果:
可以看到CEIL()返回了不小於-6.66的最小整數-6和不小於6.66的最小整數7。FLOOR()返回了不大於-6.66的最大整數-7和不大於6.66的最大整數6。
FLOOR(x)函數返回不大於x的最大整數值,返回值轉化為一個BIGINT。
4. 獲取隨機數的函數RAND()和RAND(x)
RAND(x)函數返回一個隨機浮點值v,範圍在0到1之間(即0=<v<=1),若指定一個整數參數x,則它被用作種子值,用來產生呢個重複序列;
案例:使用RAND()和RAND(x)函數產生幾個隨機數,SQL語句如下:
命令語句:
select RAND(), RAND(), RAND();
select RAND(8), RAND(8), RAND(9);
執行結果:
可以看到,不帶參數的RAND()每次產生的隨機數值是不同的。而帶參數的RAND(x)則當RAND(x)的參數x相同時,將產生相同的隨機數,不同的x值產生的隨機數不同。
5. 四捨五入函數ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)
ROUND(x)函數返回最接近於參數x的整數,對於x值進行四捨五入;
ROUND(x,y)函數返回最接近參數x的數,其值保留到小數點後y位,若y為負值,將保留x值到小數點左邊y位;
TRUNCATE(x,y)函數返回被捨去至小數點右邊y位的數字x。若y的值為0,則結果不帶有小數點或不帶有小數部分。若y設為負數,則截去(歸零)小數點左起第y位開始至最後所有低位的值。
案例:使用ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)函數進行四捨五入操作。
命令語句:
select ROUND(-1.16),ROUND(-2.78),ROUND(1.16),ROUND(2.78);
select ROUND(-1.16,0),ROUND(-2.78,-1),ROUND(1.16,1),ROUND(2.78,2);
select TRUNCATE(-1.16,0),TRUNCATE(-2.78,-1),TRUNCATE(1.16,1), TRUNCATE(2.78,2);
執行結果:
可以看到ROUND(x)四捨五入處理後,只保留了各個值的整數部分;ROUND(x,y)函數對操作數進行四捨五入,結果保留小數點右邊指定y位,y值為負數時,小數點左邊的相應位數直接保存為0,不進行四捨五入;。
TRUNCATE(x,y)直接截取值,並不進行四捨五入,而ROUND(x,y)函數在截取值的時候會四捨五入。
6. 符號函數SIGN(x)
SIGN(x)函數返回參數的符號,x值為負、零或正時返回結果依次為-1、0和1。
案例:使用SIGN(x)函數返回參數的符號,SQL語句如下:
命令語句:
select SIGN(-10), SIGN(0), SIGN(10), SIGN(-0.01), SIGN(0.01);
執行結果:
7. 冪運算函數POW(x,y)、POWER(x,y)和EXP(x)
POW(x,y)函數或者POWER(x,y)函數返回x的y次方的結果值;
EXP(x)函數返回自然常數e的x乘方後的值。
案例:使用POW和POWER函數進行乘方的運算;使用EXP函數計算e的乘方。
命令語句:
select POW(4,4), POWER(6,6), POWER(-4,4), POW(4,-4), POW(-4,-4);
select EXP(1), EXP(2), EXP(3), EXP(5), EXP(-1), EXP(-2), EXP(-3), EXP(0);
執行結果:
可以看到4的4次方和-4的4次方結果都是256。
8. 對數運算函數LOG(x)和LOG10(x)
LOG(x)函數返回x的自然對數;LOG10(x)函數返回x的基數為10的對數。
案例:使用LOG(x)函數計算自然對數;使用LOG10(x)函數計算以10為基數的對數,SQL語法如下:
命令語句:
select LOG(0), LOG(1), LOG(-1), LOG(2);
select LOG10(-1), LOG10(0), LOG10(1), LOG10(10), LOG10(100);
執行結果:
9. 角度與弧度相互轉換的函數RADIANS(x)和DEGREES(x)
RADIANS(x)函數可以將參數x由角度轉換為弧度;DEGREES(x)函數可以將參數x由弧度轉換為角度。
案例:使用RADIANS(x)將角度轉換為弧度,再使用DEGREES()將弧度轉換為角度,SQL語句如下:
命令語句:
select RADIANS(45), RADIANS(90), RADIANS(180);
select DEGREES(PI()/4), DEGREES(PI()/2), DEGREES(PI()),DEGREES(1);
執行結果:
10. 正弦函數SIN(x)和反正弦函數ASIN(x)
SIN(x)函數返回正弦值,其中x為弧度值;ASIN(x)函數返回反正弦值,即正弦為x的值。若x不再-1到1的範圍之內,則返回null。
案例:使用SIN()函數計算正弦值,使用ASIN()函數計算反正弦值,SQL語句如下:
命令語句:
select SIN(0), SIN(-1), ROUND(SIN(PI())), SIN(1);
select ASIN(0), ASIN(-1), ASIN(1), ASIN(2);
執行結果:
11. 餘弦函數COS(x)和反餘弦函數ACOS(x)
COS(x)函數返回餘弦值,其中x為弧度值;ACOS(x)函數返回反餘弦值,即餘弦為x的值。若x不再-1到1的範圍之內,則返回null。
案例:使用COS()函數計算餘弦值,使用ACOS()函數計算反餘弦值,SQL語句如下:
命令語句:
select COS(0), COS(-1), COS(PI()), COS(1);
select ACOS(0), ACOS(-1), ACOS(1);
執行結果:
可以看到,函數COS()和ACOS()互為反函數。
12. 正切函數、反正切函數和餘切函數
TAN(x)函數返回正切值,其中x為給定弧度值;ATAN(x)函數返回反正切值,即正切為x的值;COT(x)函數返回餘切值。
案例:使用TAN()函數計算正切值,使用ATAN()函數計算反正切值,使用COT()函數計算餘切值,SQL語句如下:
命令語句:
select TAN(0), TAN(-1), TAN(1), ROUND(TAN(PI()/6));
select ATAN(0), ATAN(-1), ATAN(1);
select COT(0), COT(-1), COT(1), 1/TAN(-1);
執行結果:
由結果可以看到,函數COT()和TAN()互為倒數。
未完,下期待續.....
推薦閱讀: