Mysql支持的多種數(shù)據(jù)類型主要有:數(shù)值數(shù)據(jù)類型、日期/時(shí)間類型、字符串類型。?

10年積累的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有來(lái)安免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
1.整數(shù)數(shù)據(jù)類型及其取值范圍:
類型
說(shuō)明
存儲(chǔ)需求(取值范圍)
tinyint ? ?很小整數(shù) ? ?1字節(jié)([0~255]、[-128~127]); 255=2^8-1;127=2^7-1 ?
smallint ? ?小整數(shù) ? ?2字節(jié)(0~65535、-32768~32767) ;65535=2^16-1 ?
mediumint ? ?中等 ? ?3字節(jié)(0~16777215) ;16777215=2^24-1 ?
int(integer) ? ?普通 ? ?4字節(jié)(0~4294967295) ;4294967295=2^32-1 ?
bigint ? ?大整數(shù) ? ?8字節(jié)(0~18446744073709551615);18446744073709551615=2^64-1 ?
浮點(diǎn)數(shù)定點(diǎn)數(shù):
類型名稱
說(shuō)明
存儲(chǔ)需求
float ? ?單精度浮點(diǎn)數(shù) ? ?4字節(jié) ?
double ? ?雙精度浮點(diǎn)數(shù) ? ?8字節(jié) ?
decimal ? ?壓縮的“嚴(yán)格”定點(diǎn)數(shù) ? ?M+2字節(jié) ?
注:定點(diǎn)數(shù)以字符串形式存儲(chǔ),對(duì)精度要求高時(shí)使用decimal較好;盡量避免對(duì)浮點(diǎn)數(shù)進(jìn)行減法和比較運(yùn)算。?
2.時(shí)間/日期類型:?
year范圍:1901~2155;?
time格式:‘HH:MM:SS’(如果省略寫(xiě),并且沒(méi)有冒號(hào),則默認(rèn)最右起2位為秒,再到分,最后到時(shí));?
插入系統(tǒng)當(dāng)前時(shí)間:insert into 表名 values(current_date()),(now());?
date類型:‘YYYY-MM-DD’;?
datetime(日期+時(shí)間):‘YYYY-MM-DD HH:MM:SS’或‘YYYYMMDDHHMMSS’,取值范圍:‘1000-01-01 00:00:00’~‘9999-12-31 23:59:59’;?
timestamp格式同datetime,但在存儲(chǔ)時(shí)需要4個(gè)字節(jié)(datetime需要8字節(jié)),并且以UTC(世界標(biāo)準(zhǔn)時(shí)間)進(jìn)行存儲(chǔ)(即timestamp會(huì)隨設(shè)置的時(shí)區(qū)而變化,而datetime存儲(chǔ)的絕不會(huì)變化);timestamp的范圍:1970-2037。?
3.字符串類型:?
text類型:tinytext、text、mediumtext、longtext;
類型
范圍
tinytext ? ?255=2^8-1 ?
text ? ?65535=2^16-1 ?
mediumtext ? ?16777215=2^24-1 ?
longtext ? ?4294967295=4GB=2^32-1 ?
char的存儲(chǔ)需求是定義時(shí)指定的固定長(zhǎng)度;varchar的存儲(chǔ)需求是取決于實(shí)際值長(zhǎng)度。?
set類型格式:set(’值1’,’值2’…) ——可以有0或者多個(gè)值,對(duì)于set而言,若插入的值為重復(fù)的,則只娶一個(gè)。插入的值亂序,則自動(dòng)按順序插入排列。插入不正常值,則忽略。?
二進(jìn)制類型:?
bit(M)——保存位字段值(位字段類型),M表示值的位數(shù);?
eg:select BIN(b+0) from 表名;—–b為列名;b+0表示將二進(jìn)制的結(jié)果轉(zhuǎn)換為對(duì)應(yīng)的數(shù)字的值,BIN()函數(shù)將數(shù)字轉(zhuǎn)換為二進(jìn)制。?
blog——-二進(jìn)制大對(duì)象,用來(lái)存儲(chǔ)可變數(shù)量的數(shù)據(jù)。
數(shù)據(jù)類型
存儲(chǔ)范圍(字節(jié))
tinyblog ? ?最多255=2^8-1 字節(jié) ?
bolg ? ?最多65535=2^16-1 字節(jié) ?
mediumblog ? ?最多16777215=2^24-1 字節(jié) ?
longblog ? ?最多4294967295=4GB=2^32-1 字節(jié) ?
1.float類型
float列類型默認(rèn)長(zhǎng)度查不到結(jié)果,必須指定精度,比如
num float, insert into table (num) values (0.12); select * from table where num=0.12的話,empty set。
num float(9,7), insert into table (num) values (0.12); select * from table where num=0.12的話會(huì)查到這條記錄。
mysql create table tt
- (
- num float(9,3)
- );
Query OK, 0 rows affected (0.03 sec)
mysql insert into tt(num)values(1234567.8);
Query OK, 1 row affected, 1 warning (0.04 sec)
注:超出字段范圍,插入數(shù)據(jù)有誤
mysql select * from tt;
+-------------+
| num |
+-------------+
| 1000000.000 |
+-------------+
2 rows in set (0.00 sec)
***************************************************************************
注:通常在 Linux 下安裝完 MySQL 后,默認(rèn)的 sql-mode 值是空,在這種情形下 mysql 執(zhí)行的是一種不嚴(yán)格的檢查,例如日期字段可以插入 ’ 0000-00-00 00:00:00 ’這樣的值,還有如果要插入的字段長(zhǎng)度超過(guò)列定義的長(zhǎng)度,那么 mysql 不會(huì)終止操作,而是會(huì)自動(dòng)截?cái)嗪竺娴淖址^續(xù)插入操作。
我們發(fā)現(xiàn)插入的字符被自動(dòng)截?cái)嗔耍侨绻覀儽疽庀M绻L(zhǎng)度超過(guò)限制就報(bào)錯(cuò),那么我們可以設(shè)置 sql_mode 為 STRICT_TRANS_TABLES ,如下:
mysql set session sql_mode='STRICT_TRANS_TABLES';
這樣我們?cè)賵?zhí)行同樣的操作,mysql 就會(huì)告訴我們插入的值太長(zhǎng),操作被終止,如下:
mysql insert into tt(num) values(1234567.8);
ERROR 1264 (22003): Out of range value for column 'num' at row 1
***************************************************************************
mysql insert into tt(num)values(123456.8);
Query OK, 1 row affected (0.00 sec)
mysql select * from tt;
+-------------+
| num |
+-------------+
| 1000000.000 |
| 123456.797 |
+-------------+
2 rows in set (0.00 sec)
注:小數(shù)位數(shù)不夠,自動(dòng)補(bǔ)齊,但是存在一個(gè)問(wèn)題就是如上的近似值。
mysql insert into tt(num)values(123456.867);
Query OK, 1 row affected (0.04 sec)
mysql select * from tt;
+-------------+
| num |
+-------------+
| 1000000.000 |
| 123456.797 |
| 123456.867 |
+-------------+
3 rows in set (0.00 sec)
mysql select * from tt where num=123456.867;
+------------+
| num |
+------------+
| 123456.867 |
+------------+
1 row in set (0.00 sec)
mysql insert into tt(num)values(2.8);
Query OK, 1 row affected (0.04 sec)
mysql select * from tt;
+-------------+
| num |
+-------------+
| 1000000.000 |
| 123456.797 |
| 123456.867 |
| 2.800 |
+-------------+
4 rows in set (0.00 sec)
mysql select * from tt where num=2.8;
+-------+
| num |
+-------+
| 2.800 |
+-------+
1 row in set (0.00 sec)
mysql insert into tt(num)values(2.888888);
Query OK, 1 row affected (0.00 sec)
mysql select * from tt;
+-------------+
| num |
+-------------+
| 1000000.000 |
| 123456.797 |
| 123456.867 |
| 2.800 |
| 2.889 |
+-------------+
5 rows in set (0.00 sec)
注:小數(shù)位數(shù)超了,自動(dòng)取近似值。
--------------------------------------------------------------------------------------
2.double類型
mysql create table tt(
- num double(9,3)
- );
Query OK, 0 rows affected (0.04 sec)
mysql insert into tt(num) values(234563.9);
Query OK, 1 row affected (0.00 sec)
mysql select * from tt;
+------------+
| num |
+------------+
| 234563.900 |
+------------+
1 row in set (0.00 sec)
mysql insert into tt(num) values(2345623.2);
Query OK, 1 row affected, 1 warning (0.04 sec)
mysql insert into tt(num) values(234563.2);
Query OK, 1 row affected (0.00 sec)
mysql select * from tt;
+------------+
| num |
+------------+
| 234563.900 |
| 999999.999 |
| 234563.200 |
+------------+
2 rows in set (0.00 sec)
mysql insert into tt(num) values(2.8);
Query OK, 1 row affected (0.00 sec)
mysql select * from tt;
+------------+
| num |
+------------+
| 234563.900 |
| 999999.999 |
| 234563.200 |
| 2.800 |
+------------+
3 rows in set (0.00 sec)
FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。這里,“(M,D)”表示該值一共顯示M位整數(shù),其中D位位于小數(shù)點(diǎn)后面。
例如,定義為FLOAT(7,4)的一個(gè)列可以顯示為-999.9999。MySQL保存值時(shí)進(jìn)行四舍五入,因此如果在FLOAT(7,4)列內(nèi)插入999.00009,近似結(jié)果是999.0001。
單精度浮點(diǎn)數(shù)(float)的尾數(shù)是用24bit表示的,雙精度(double)浮點(diǎn)數(shù)的尾數(shù)是用53bit表示的,轉(zhuǎn)換成十進(jìn)制:
2^24 - 1 = 16777215
2^53 - 1 = 9007199254740991
由上可見(jiàn),IEEE754單精度浮點(diǎn)數(shù)的有效數(shù)字二進(jìn)制是24位,按十進(jìn)制來(lái)說(shuō),是8位;雙精度浮點(diǎn)數(shù)的有效數(shù)字二進(jìn)制是53位,按十進(jìn)制來(lái)說(shuō),是16 位。
這個(gè)問(wèn)題,直接在源頭解決;
Mysql數(shù)據(jù)庫(kù)表里面,設(shè)置你要取整的字段的數(shù)據(jù)類型為int,即可
不用寫(xiě)進(jìn)去是小數(shù),用的時(shí)候再取整,這么麻煩
網(wǎng)站題目:mysql怎么取近似值,近似數(shù)如何取近似值
分享路徑:http://chinadenli.net/article12/dsgicgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、網(wǎng)站收錄、網(wǎng)站設(shè)計(jì)公司、企業(yè)建站、網(wǎng)站營(yíng)銷、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)