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()互為倒數。

未完,下期待續.....


推薦閱讀:

TAG:MySQL入門 | 資料庫 | MySQL |