日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL讲义第 40 讲——select 查询之函数(3):数学函数

發(fā)布時間:2024/3/7 数据库 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL讲义第 40 讲——select 查询之函数(3):数学函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MySQL講義第40講——select 查詢之函數(shù)(3):數(shù)學(xué)函數(shù)

文章目錄

  • MySQL講義第40講——select 查詢之函數(shù)(3):數(shù)學(xué)函數(shù)
    • 一、數(shù)據(jù)準備
    • 二、MySQL 數(shù)學(xué)函數(shù)介紹
        • 1、ABS() 函數(shù)
        • 2、FORMAT() 函數(shù)
        • 3、ROUND() 函數(shù)
        • 4、TRUNCATE() 函數(shù)
        • 5、CEILING() 和 FLOOR() 函數(shù)
        • 6、RAND() 函數(shù)
        • 7、SQRT() 函數(shù)
        • 8、SIGN() 函數(shù)
        • 9、POWER() 函數(shù)
        • 10、PI() 函數(shù)
        • 11、MOD() 函數(shù)
        • 12、三角函數(shù)
        • 13、EXP() 函數(shù)
        • 14、LN() 函數(shù)和 LOG() 函數(shù)

使用函數(shù)可在查詢時構(gòu)造更加靈活的查詢條件。MySQL 提供了處理數(shù)值型數(shù)據(jù)的函數(shù),下面對數(shù)學(xué)函數(shù)進行詳細的介紹并舉例說明其用法。

一、數(shù)據(jù)準備

在當(dāng)前數(shù)據(jù)庫中創(chuàng)建一個保存上市公司信息的 listed_company 表,表結(jié)構(gòu)及表中的數(shù)據(jù)如下:

CREATE TABLE listed_company(company_id CHAR(6) PRIMARY KEY, company_abbreviation CHAR(20), company_fullname CHAR(200), English_name CHAR(200), registered_address CHAR(200),listing_date DATETIME,total_share_capital DECIMAL(16,2), circulating_share_capital DECIMAL(16,2),industry CHAR(100), company_website CHAR(200) ); mysql> DESC listed_company; +---------------------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------------------+---------------+------+-----+---------+-------+ | company_id | char(6) | NO | PRI | NULL | | | company_abbreviation | char(20) | YES | | NULL | | | company_fullname | char(200) | YES | | NULL | | | English_name | char(200) | YES | | NULL | | | registered_address | char(200) | YES | | NULL | | | listing_date | datetime | YES | | NULL | | | total_share_capital | decimal(16,2) | YES | | NULL | | | circulating_share_capital | decimal(16,2) | YES | | NULL | | | industry | char(100) | YES | | NULL | | | company_website | char(200) | YES | | NULL | | +---------------------------+---------------+------+-----+---------+-------+ 10 rows in set (0.00 sec)SELECT * FROM listed_company WHERE company_id = '000004'\G*************************** 1. row ***************************company_id: 000004company_abbreviation: 國農(nóng)科技company_fullname: 深圳中國農(nóng)大科技股份有限公司English_name: SHENZHEN CAU TECHNOLOGY CO., LTDregistered_address: 廣東省深圳市南山區(qū)中心路(深圳灣段)3333號中鐵南方總部大廈503室listing_date: 1990-12-01 00:00:00total_share_capital: 83976684.00 circulating_share_capital: 82905273.00industry: C 制造業(yè)company_website: www.sz000004.cn 1 row in set (0.00 sec)

二、MySQL 數(shù)學(xué)函數(shù)介紹

1、ABS() 函數(shù)

ABS() 函數(shù)返回一個數(shù)值的絕對值。語法格式如下:

ABS(n);

舉例:查詢【工商銀行】和【農(nóng)業(yè)銀行】兩支股票的總股本差異

SET @count_gsyh = 0; SET @count_nyyh = 0;SELECT total_share_capital INTO @count_gsyh FROMlisted_company WHEREcompany_abbreviation = '工商銀行';SELECT total_share_capital INTO @count_nyyh FROMlisted_company WHEREcompany_abbreviation = '農(nóng)業(yè)銀行';SELECT@count_gsyh,@count_nyyh,ABS(@count_gsyh - @count_nyyh) AS count_interval; +-------------+-------------+----------------------------------------+ | @count_gsyh | @count_nyyh | count_interval | +-------------+-------------+----------------------------------------+ | 26961221.25 | 29405529.39 | 2444308.140000000000000000000000000000 | +-------------+-------------+----------------------------------------+ 1 row in set (0.01 sec)

2、FORMAT() 函數(shù)

FORMAT() 函數(shù)可以對一個數(shù)值進行格式化操作,返回值類型為字符串。語法格式如下:

FORMAT(X,n);--說明:1)返回值的類型為字符串。 (2)對 X 進行四舍五入,保留 n 位小數(shù),并以 ##,###,###.### 格式顯示。

舉例:顯示股票的總股本和流通股本,并進行格式化

SELECTcompany_id,company_abbreviation,FORMAT(total_share_capital,4) AS total_share_capital,FORMAT(circulating_share_capital,4) AS circulating_share_capital FROM listed_company WHERE company_id < '000010'; +------------+----------------------+---------------------+---------------------------+ | company_id | company_abbreviation | total_share_capital | circulating_share_capital | +------------+----------------------+---------------------+---------------------------+ | 000001 | 平安銀行 | 17,170,411,366.0000 | 14,623,200,091.0000 | | 000002 | 萬 科A | 9,724,196,533.0000 | 9,705,462,185.0000 | | 000004 | 國農(nóng)科技 | 83,976,684.0000 | 82,905,273.0000 | | 000005 | 世紀星源 | 1,058,536,842.0000 | 912,332,164.0000 | | 000006 | 深振業(yè)A | 1,349,995,046.0000 | 1,343,618,405.0000 | | 000007 | 全新好 | 230,965,363.0000 | 205,776,701.0000 | | 000008 | 神州高鐵 | 2,757,709,279.0000 | 1,494,764,599.0000 | | 000009 | 中國寶安 | 2,149,344,971.0000 | 2,118,885,157.0000 | +------------+----------------------+---------------------+---------------------------+ 8 rows in set (0.00 sec)

3、ROUND() 函數(shù)

ROUND() 函數(shù)可以對一個數(shù)值進行四舍五入操作。語法格式如下:

ROUND(x); ROUND(x,n); --說明:1)對 x 進行四舍五入,保留 n 位小數(shù)。 (2)如果省略 n,則保留 0 位小數(shù)。 (3)n 如果小于 0,則對整數(shù)位四舍五入。比如 n = -2,對百位數(shù)四舍五入。

舉例:

(1)查詢所有銀行股的總股本并四舍五入保留到千位數(shù)。

SELECTcompany_id,company_abbreviation,FORMAT(ROUND(total_share_capital,-3),0) AS total_share_capital FROM listed_company WHERE company_abbreviation LIKE '%銀行%'; +------------+----------------------+---------------------+ | company_id | company_abbreviation | total_share_capital | +------------+----------------------+---------------------+ | 000001 | 平安銀行 | 17,170,411,000 | | 002142 | 寧波銀行 | 3,899,794,000 | | 002807 | 江陰銀行 | 1,767,354,000 | | 600000 | 浦發(fā)銀行 | 2,162,000 | | 600015 | 華夏銀行 | 1,069,000 | | 600016 | 民生銀行 | 2,955,000 | | 600036 | 招商銀行 | 2,063,000 | | 600908 | 無錫銀行 | 185,000 | | 600919 | 江蘇銀行 | 1,154,000 | | 600926 | 杭州銀行 | 262,000 | | 601009 | 南京銀行 | 606,000 | | 601128 | 常熟銀行 | 222,000 | | 601166 | 興業(yè)銀行 | 1,905,000 | | 601169 | 北京銀行 | 1,521,000 | | 601229 | 上海銀行 | 600,000 | | 601288 | 農(nóng)業(yè)銀行 | 29,406,000 | | 601328 | 交通銀行 | 3,925,000 | | 601398 | 工商銀行 | 26,961,000 | | 601818 | 光大銀行 | 3,981,000 | | 601939 | 建設(shè)銀行 | 959,000 | | 601988 | 中國銀行 | 21,077,000 | | 601997 | 貴陽銀行 | 230,000 | | 601998 | 中信銀行 | 3,405,000 | | 603323 | 吳江銀行 | 111,000 | +------------+----------------------+---------------------+ 24 rows in set (0.00 sec)

(2)查詢股票簡稱包含【石油】的股票的總股本并四舍五入保留1位小數(shù)

SELECTcompany_id,company_abbreviation,total_share_capital,FORMAT(ROUND(total_share_capital,1),1) AS total_share_capital_002 FROM listed_company WHERE company_abbreviation LIKE '%石油%'; +------------+----------------------+---------------------+-------------------------+ | company_id | company_abbreviation | total_share_capital | total_share_capital_002 | +------------+----------------------+---------------------+-------------------------+ | 000554 | 泰山石油 | 480793318.00 | 480,793,318.0 | | 300164 | 通源石油 | 440432159.00 | 440,432,159.0 | | 601857 | 中國石油 | 16192207.78 | 16,192,207.8 | +------------+----------------------+---------------------+-------------------------+ 3 rows in set (0.00 sec)

4、TRUNCATE() 函數(shù)

TRUNCATE() 函數(shù)把一個數(shù)值截取 n 位小數(shù),并且不進行四舍五入。語法格式如下:

TRUNCATE(x,n);--說明:把數(shù)值 x 的小數(shù)點后第 n 位之后的數(shù)據(jù)直接舍去(不四舍五入),保留 n 為小數(shù)。

舉例:

SELECT TRUNCATE(12.258,2),TRUNCATE(1285.0128,-2),TRUNCATE(12.7258,2); +--------------------+------------------------+---------------------+ | TRUNCATE(12.258,2) | TRUNCATE(1285.0128,-2) | TRUNCATE(12.7258,2) | +--------------------+------------------------+---------------------+ | 12.25 | 1200 | 12.72 | +--------------------+------------------------+---------------------+ 1 row in set (0.01 sec)

5、CEILING() 和 FLOOR() 函數(shù)

CEILING() 和 FLOOR() 函數(shù)可以對一個數(shù)值進行取整操作。語法格式如下:

CEILING(X); --返回大于或等于 X 的最小整數(shù) FLOOR(X); --返回小于或等于 X 的最大整數(shù)

舉例:

SELECT CEILING(4.9),CEILING(-2.8); +--------------+---------------+ | CEILING(4.9) | CEILING(-2.8) | +--------------+---------------+ | 5 | -2 | +--------------+---------------+ 1 row in set (0.01 sec)SELECT FLOOR(3.9),FLOOR(-2.7); +------------+-------------+ | FLOOR(3.9) | FLOOR(-2.7) | +------------+-------------+ | 3 | -3 | +------------+-------------+ 1 row in set (0.00 sec)

6、RAND() 函數(shù)

RAND() 函數(shù)用于生成一個隨機數(shù)。語法格式如下:

RAND(n); RAND();--說明:1)RAND() 函數(shù)可以產(chǎn)生一個01之間的隨機數(shù)。 (2)如果無參數(shù),每次運行都會產(chǎn)生一個不同的隨機數(shù)。 (3)如果指定了種子 n,則每次運行時產(chǎn)生的隨機數(shù)相同。

舉例:

(1)基本用法

SELECT RAND(22),RAND(22),RAND(22); +--------------------+--------------------+--------------------+ | RAND(22) | RAND(22) | RAND(22) | +--------------------+--------------------+--------------------+ | 0.6592488313645579 | 0.6592488313645579 | 0.6592488313645579 | +--------------------+--------------------+--------------------+ 1 row in set (0.01 sec)SELECT RAND(),RAND(),RAND(); +--------------------+------------------------+---------------------+ | RAND() | RAND() | RAND() | +--------------------+------------------------+---------------------+ | 0.1869446245831853 | 0.00047542341097763126 | 0.44154327403897725 | +--------------------+------------------------+---------------------+ 1 row in set (0.00 sec)

(2)創(chuàng)建一張表 t1,為 num 列插入 100 到 200 之間的隨機整數(shù)

-- 1、創(chuàng)建表 t1 CREATE TABLE t1(id int primary key auto_increment,num int ); --2、創(chuàng)建存儲過程,向表中添加若干記錄 DELIMITER // CREATE PROCEDURE sp_insert(IN cnt_insert INT) BEGINDECLARE n INT;SET n = 1;WHILE (n < cnt_insert) DOINSERT INTO t1(num)VALUES(100 + RAND() * 100);SET n = n +1;END WHILE; END // DELIMITER ; --3、執(zhí)行存儲過程,向 t1 表添加 20 條記錄 CALL sp_insert(20); --4、查看 t1 表中的數(shù)據(jù) SELECT* FROMt1; mysql> select * from t1; +----+------+ | id | num | +----+------+ | 1 | 179 | | 2 | 135 | | 3 | 139 | | 4 | 189 | | 5 | 127 | | 6 | 170 | | 7 | 169 | | 8 | 136 | | 9 | 173 | | 10 | 154 | | 11 | 153 | | 12 | 104 | | 13 | 160 | | 14 | 186 | | 15 | 153 | | 16 | 105 | | 17 | 167 | | 18 | 122 | | 19 | 106 | +----+------+ 19 rows in set (0.00 sec)

7、SQRT() 函數(shù)

SQRT() 函數(shù)可以求一個數(shù)的平方根。語法格式如下:

SQRT(x);

舉例:

SELECTSQRT(16),SQRT(10); +----------+--------------------+ | SQRT(16) | SQRT(10) | +----------+--------------------+ | 4 | 3.1622776601683795 | +----------+--------------------+ 1 row in set (0.01 sec)

8、SIGN() 函數(shù)

SIGN() 函數(shù)用于判斷一個數(shù)是大于 0、小于 0 或者等于 0。語法格式如下:

SIGN(x);--說明:如果 x>0,返回 1,如果 x<0,返回 -1,如果 x=0,返回 0。

例如:

SELECT SIGN(10666.98),SIGN(-0.00988),SIGN(0); +----------------+----------------+---------+ | SIGN(10666.98) | SIGN(-0.00988) | SIGN(0) | +----------------+----------------+---------+ | 1 | -1 | 0 | +----------------+----------------+---------+ 1 row in set (0.02 sec)

9、POWER() 函數(shù)

POWER() 函數(shù)用于計算一個數(shù)的若干次冪。語法格式如下:

POWER(x,y);--說明:返回x的y次方。

舉例:

SELECTPOWER(2,10),POWER(16,-0.5),POWER(4,1.2); +-------------+----------------+-------------------+ | POWER(2,10) | POWER(16,-0.5) | POWER(4,1.2) | +-------------+----------------+-------------------+ | 1024 | 0.25 | 5.278031643091577 | +-------------+----------------+-------------------+ 1 row in set (0.00 sec)

10、PI() 函數(shù)

PI() 函數(shù)返回圓周率。語法格式如下:

PI();

舉例:

--求半徑為 5 的圓的周長和面積 SET @r = 5; SELECT PI(),@r AS radius,2 * PI() * @r AS perimeter,PI() * POWER(@r, 2) AS area; +----------+--------+-----------+-------------------+ | PI() | radius | perimeter | area | +----------+--------+-----------+-------------------+ | 3.141593 | 5 | 31.415927 | 78.53981633974483 | +----------+--------+-----------+-------------------+ 1 row in set (0.00 sec)

11、MOD() 函數(shù)

MOD() 函數(shù)進行求余操作。語法格式如下:

MOD(m,n);--說明:返回 m 除以 n 的余數(shù)。

舉例:

SELECTMOD(10,3),MOD(10,-3),MOD(-10,3),MOD(-10,-3); +-----------+------------+------------+-------------+ | MOD(10,3) | MOD(10,-3) | MOD(-10,3) | MOD(-10,-3) | +-----------+------------+------------+-------------+ | 1 | 1 | -1 | -1 | +-----------+------------+------------+-------------+ 1 row in set (0.01 sec)

12、三角函數(shù)

角函數(shù)的語法格式如下:

SIN(X); --正弦函數(shù) COS(X); --余弦函數(shù) TAN(X); --正切函數(shù) COT(X); --余切函數(shù)--說明:X表示弧度

舉例:

SELECTSIN(pi()/2) as sin,COS(pi()/6) as cos,TAN(pi()/2) as tan,COT(pi()/3) as cot; +------+--------------------+----------------------+-------------------+ | sin | cos | tan | cot | +------+--------------------+----------------------+-------------------+ | 1 | 0.8660254037844387 | 1.633123935319537e16 | 0.577350269189626 | +------+--------------------+----------------------+-------------------+ 1 row in set (0.05 sec)

13、EXP() 函數(shù)

EXP() 函數(shù)返回常數(shù) e 的若干次冪。語法格式如下:

EXP(X);--說明:返回e的X次方。

舉例:

SELECTEXP(1),EXP(2); +-------------------+------------------+ | EXP(1) | EXP(2) | +-------------------+------------------+ | 2.718281828459045 | 7.38905609893065 | +-------------------+------------------+ 1 row in set (0.04 sec)

14、LN() 函數(shù)和 LOG() 函數(shù)

LN() 函數(shù)返回一個數(shù)的自然對數(shù),LOG() 函數(shù)返回一個數(shù)的常用對數(shù)。語法格式如下:

LN(X); --返回X的自然對數(shù) LOG(X); --返回X的自然對數(shù) LOG(n,x); --返回以n為底的對數(shù) LOG2(x); --返回以2為底的對數(shù) LOG10(x); --返回以10為底的對數(shù)

舉例:

SELECTLN(10),LOG(10); +-------------------+-------------------+ | LN(10) | LOG(10) | +-------------------+-------------------+ | 2.302585092994046 | 2.302585092994046 | +-------------------+-------------------+ 1 row in set (0.02 sec)SELECTLOG(2,1024),LOG2(1024),LOG10(1000); +-------------+------------+-------------+ | LOG(2,1024) | LOG2(1024) | LOG10(1000) | +-------------+------------+-------------+ | 10 | 10 | 3 | +-------------+------------+-------------+ 1 row in set (0.01 sec)

總結(jié)

以上是生活随笔為你收集整理的MySQL讲义第 40 讲——select 查询之函数(3):数学函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。