真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql浮點型怎么打,mysql 浮點型

mysql類型

MySQL常見數(shù)據(jù)類型:[數(shù)值]、[日期時間]和[字符串]類型。

網(wǎng)站建設哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序設計、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了莎車免費建站歡迎大家使用!

一、數(shù)值

1、整型

MySQL數(shù)據(jù)類型含義(有符號)tinyint1個字節(jié)

范圍(-128~127)smallint2個字節(jié)

范圍(-32768~32767)mediumint3個字節(jié)

范圍(-8388608~8388607)int4個字節(jié)

范圍(-2147483648~2147483647)bigint8個字節(jié)

范圍(+-9.22*10的18次方)

在int類型里,都是用來存儲整形數(shù)據(jù),可以根據(jù)實際需要選取數(shù)據(jù)類型。

取值范圍如果加了unsigned,則最大數(shù)值范圍翻倍,比如 tinyint unsigned的取值范圍為(0~256)。

int(m)里的m是表示SELECT查詢結(jié)果集中的顯示寬度,無實際意義,不影響實際的取值范圍

2、浮點型

MySQL數(shù)據(jù)類型含義float(m,d)單精度浮點型

8位精度(4字節(jié))

m總個數(shù),d小數(shù)位double(m,d)雙精度浮點型

16位精度(8字節(jié))

m總個數(shù),d小數(shù)位decimal(m,d)定點數(shù)

總個數(shù)m38, d小數(shù)位

設一個字段定義為float(5,2),如果插入一個數(shù)123.45678,實際數(shù)據(jù)庫里存的是123.46(四舍五入)

===浮點數(shù)類型測試:float

作用:用于存儲用戶的身高、體重、薪水等

(浮點數(shù)和定點數(shù)都可以用類型名稱后加(M,D)的方式來表示,

(M,D)表示一共顯示M位數(shù)字(整數(shù)位+小數(shù)位),

其中D位于小數(shù)點后面,M和D又稱為精度和標度。)

一、浮點數(shù)float類型測試

1、創(chuàng)建一個表

示例:

mysql create table test4(float_test float(5,2)); //一共5位,小數(shù)占2位

Query OK, 0 rows affected (0.00 sec)

2、查詢表結(jié)構(gòu)

示例:

mysql desc test4;

+------------+------------+------+-----+---------+-------+

| Field? ? ? | Type? ? ? | Null | Key | Default | Extra |

+------------+------------+------+-----+---------+-------+

| float_test | float(5,2) | YES? |? ? | NULL? ? |? ? ? |

+------------+------------+------+-----+---------+-------+

1 row in set (0.00 sec)

(float(5,2)

5是整數(shù)加小數(shù)的總長

,2是小數(shù)長度。

整數(shù)意味只有3位長度。)

3、插入合法數(shù)據(jù)

示例:

mysql insert into test4 values (10.2), (70.243), (70.246);

Query OK, 3 rows affected (0.00 sec)

Records: 3? Duplicates: 0? Warnings: 0

4、查詢表內(nèi)容

示例:

mysql select * from test4;

+------------+

| float_test |

+------------+

|? ? ? 10.20 |

|? ? ? 70.24 |

|? ? ? 70.25 |

+------------+

3 rows in set (0.00 sec)

5、插入非法數(shù)據(jù)

示例:

mysql insert into test4 values (1111.2);

ERROR 1264 (22003): Out of range value for column 'float_test' at row 1

二、LAB2:(精準小數(shù)decimal)

定點數(shù)decimal類型測試:

(定點數(shù)在MySQL內(nèi)部以字符串形式存儲,比浮點數(shù)更精確,

適合用來表示貨幣等精度高的數(shù)據(jù)。

decimal在不指定精度時,默認的整數(shù)位為10,默認的小數(shù)位為0)

1、創(chuàng)建一個表

mysql? create table test5(decimal_test decimal(5,2));

(總長度5位,小數(shù)占2位)

2、插入數(shù)據(jù)

示例:

mysql insert into test5 values (70.245);

Query OK, 1 row affected, 1 warning (0.05 sec)

(注意有警告??!? 超長部分不吉利,會四舍五入)

查看:mysql? select * from test5;

3、請思考如何創(chuàng)建整數(shù)9位,小數(shù)5位的數(shù)據(jù)類型

三、區(qū)別

三者區(qū)別介紹:

1、float:浮點型,含字節(jié)數(shù)為4,32bit,數(shù)值范圍為-3.4E38~3.4E38(7個有效位)

2、double:雙精度實型,含字節(jié)數(shù)為8,64bit數(shù)值范圍-1.7E308~1.7E308(15個有效位)

3、decimal:數(shù)字型,128bit,常用于銀行帳目計算。(28個有效位)

MySQL 浮點型?

浮點型

float(255,30) 共255位 小數(shù)部分30位

double(255,30) 共255位 小數(shù)部分30位

dacimal(65,30) 共65位 小數(shù)部分30位

精準度驗證

create table t15(id float(255,30))

create table t15(id double(255,30))

create table t15(id decimal(60,30))

float double decimal

mysql 數(shù)據(jù)類型的詳解

MySQL數(shù)據(jù)庫的表是一個二維表,由一個或多個數(shù)據(jù)列構(gòu)成。

每個數(shù)據(jù)列都有它的特定類型,該類型決定了MySQL如何看待該列數(shù)據(jù),我們可以把整型數(shù)值存放到字符類型的列中,MySQL則會把它看成字符串來處理。

MySQL中的列類型有三種:數(shù)值類、字符串類和日期/時間類。

從大類來看列類型和數(shù)值類型一樣,都是只有三種。但每種列類型都還可細分。

下面對各種列類型進行詳細介紹。

數(shù)值類的數(shù)據(jù)列類型

數(shù)值型的列類型包括整型和浮點型兩大類。

TINYINT:1字節(jié) 非常小的正整數(shù),帶符號:-128~127,不帶符號:0~255

SMALLINT:2字節(jié) 小整數(shù),帶符號:-32768~32767,不帶符號:0~65535

MEDIUMINT:3字節(jié) 中等大小的整數(shù),帶符號:-8388608~8388607,不帶符號:0~16777215

INT:4字節(jié) 標準整數(shù),帶符號:-2147483648~2147483647,不帶符號:0~4294967295

BIGINT:8字節(jié) 大整數(shù),帶符號:-9223372036854775808~9233372036854775807,不帶符號:0~18446744073709551615

FLOAT:4字節(jié) 單精度浮點數(shù),最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38

DOUBLE:8字節(jié) 雙精度浮點數(shù),最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308

DECIMAL:M+2字節(jié) 以字符串形式表示的浮點數(shù),它的取值范圍可變,由M和D的值決定。

MYSQL支持大量的列類型,它們可以被分為 3 類:數(shù)字類型、日期和時間類型以及字符串(字符)類型。這個章節(jié)首先給出可用類型的概述,并且總結(jié)各類型所需的存儲需求,然后提供各類型中的類型范疇更詳細的描述。概述有意地簡化了。更詳細的說明應該參考特寫列類型的附加信息,例如你能為其指定值的允許格式。

MySQL 支持的列類型在下面列出。下列代碼字母用于描述中:

M指出最大的顯示尺寸。最大的顯示尺寸長度為 255。D適用于浮點類型。指出跟隨在十進制小數(shù)點后的數(shù)字數(shù)量。最大可能值為 30,但不應大于M-2。

方括號 (“[”and“]”) 指定可選的類型修飾部份。

注意,如果為一個列指定了ZEROFILL,MySQL 將自動為這個列添加UNSIGNED屬性。

警告:你應該知道當在兩個整數(shù)類型值中使用減法時,如有一個為UNSIGNED類型,那么結(jié)果也是無符號的。查看章節(jié)6.3.5 Cast 函數(shù)。

TINYINT[(M)] [UNSIGNED] [ZEROFILL]-128到127。無符號的范圍是0到255。

BITBOOL它們是TINYINT(1)的同義詞。

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]一個小整數(shù)。有符號的范圍是-32768到32767。無符號的范圍是0到65535。

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]一個中等大小的整數(shù)。有符號的范圍是-8388608到8388607。無符號的范圍是0到16777215。

INT[(M)] [UNSIGNED] [ZEROFILL]一個正常大小的整數(shù)。有符號的范圍是-2147483648到2147483647。無符號的范圍是0到4294967295。

INTEGER[(M)] [UNSIGNED] [ZEROFILL]INT的同義詞。

BIGINT[(M)] [UNSIGNED] [ZEROFILL]一個大的整數(shù)。有符號的范圍是-9223372036854775808到9223372036854775807。無符號的范圍是0到18446744073709551615。

你應該知道的有關BIGINT列的一些事情:

BIGINT或DOUBLE值來完成的,因此你不應該使用大于9223372036854775807(63 bits) 的無符號大整數(shù),除了位函數(shù)之外!如果你這樣做了,結(jié)果中的某些大數(shù)字可能會出錯,因為將BIGINT轉(zhuǎn)換成DOUBLE時產(chǎn)生了舍入錯誤。MySQL 4.0 在下列情況下可以處理BIGINT:

在一個BIGINT列中使用整數(shù)存儲一個大的無符號值。

在MIN(big_int_column)和MAX(big_int_column)中。

當兩個操作數(shù)都是整數(shù)時使用操作符 (+、-、*、等)。

通常你可以在一個BIGINT列中以字符串方式存儲的一個精確的整數(shù)。在這種情況下,MySQL 將執(zhí)行一個字符串到數(shù)字的轉(zhuǎn)換,包括無 intermediate 的雙精度表示法。

當兩個參數(shù)均是整數(shù)值時,“-”、“+”和“*”將使用BIGINT運算!這就意味著,如果兩個大整數(shù)的乘積(或函數(shù)的結(jié)果返回整數(shù))的結(jié)果大于9223372036854775807時,你可能會得到意想不到的結(jié)果。

FLOAT(precision) [UNSIGNED] [ZEROFILL]一個浮點型數(shù)字。

precision可以是=24作為一個單精度的浮點數(shù)字和介于 25 和 53 之間作為一個雙精度的浮點數(shù)字。這些類型與下面描述的FLOAT和DOUBLE類型相似。FLOAT(X)有與相應的FLOAT和DOUBLE類型同樣的范圍,但是顯示尺寸和十進制小數(shù)位數(shù)是未定義的。在 MySQL 3.23 中,它是一個真實的浮點值。而在 MySQL 早期的版本中,F(xiàn)LOAT(precision)通常有 2 小數(shù)位。 注意,由于在 MySQL 中所有的計算都是以雙精度執(zhí)行的,所以使用FLOAT可能帶來一些意想不到的問題。查看章節(jié)A.5.6 解決沒有匹配行的問題。

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]一個小的(單精度) 浮點數(shù)字。允許的值是-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。如果UNSIGNED被指定,負值是不允許的。M是顯示寬度,D是小數(shù)位數(shù)。FLOAT沒有參數(shù)或有X= 24 的FLOAT(X)代表一個單精度的浮點數(shù)字。

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]一個正常大小的(雙精度)浮上數(shù)字。允許的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308。如果UNSIGNED被指定,負值是不允許的。M是顯示寬度,D是小數(shù)位數(shù)。DOUBLE沒胡參數(shù)或有 25 =X= 53 的FLOAT(X)代表一個雙精度的浮點數(shù)字。

DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL]

REAL[(M,D)] [UNSIGNED] [ZEROFILL]它們是DOUBLE同義詞。

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]一個未壓縮(unpacked)的浮點數(shù)。運作如同一個CHAR列:“unpacked” 意味著數(shù)字是以一個字符串存儲的,值的每一位將使用一個字符。小數(shù)點并且對于負數(shù),“-”符號不在M中計算(但是它們的空間是被保留的)。如果D是 0,值將沒有小數(shù)點或小數(shù)部份。DECIMAL值的最大范圍與DOUBLE一致,但是對于一個給定的DECIMAL列,實際的范圍可以被所選擇的M和D限制。如果UNSIGNED被指定,負值是不允許的。 如果D被忽略,缺省為 0。如果M被忽略,缺省為 10。 在 MySQL 3.23 以前,M參數(shù)必須包含符號與小數(shù)點所需的空間。

DEC[(M[,D])] [UNSIGNED] [ZEROFILL]

NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]DECIMAL的同義詞。

DATE一個日期。支持的范圍是'1000-01-01'到'9999-12-31'。MySQL 以'YYYY-MM-DD'格式顯示DATE值,但是允許你以字符串或數(shù)字給一個DATE列賦值。查看章節(jié)6.2.2.2DATETIME、DATE和TIMESTAMP類型。

DATETIME一個日期和時間的組合。支持的范圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL 以'YYYY-MM-DD HH:MM:SS'格式顯示DATETIME值,但是允許你以字符串或數(shù)字給一個DATETIME列賦值。查看章節(jié)6.2.2.2DATETIME、DATE和TIMESTAMP類型。

TIMESTAMP[(M)]一個時間戳。范圍是'1970-01-01 00:00:00'到2037年間的任意時刻。 MySQL 4.0 和更早版本中,TIMESTAMP值是以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式顯示的,它取決于M是否是14(或省略)、12、8或6,但是允許你以字符串或數(shù)字給一個TIMESTAMP列賦值。 從 MySQL 4.1 開始,TIMESTAMP以'YYYY-MM-DD HH:MM:DD'格式作為字符返回。如果你你希望以數(shù)字形式返回則必須在該時間戳字段后加上 +0。不同的時間戳長度是不支持的。從 MySQL 4.0.12 開始,選項--new可以被用來使服務器與 4.1 一樣運作。TIMESTAMP列有益于記錄一個INSERT或UPDATE操作的日期和時間,因為如果你自己沒有給它賦值,它將被自動地設置為最近一次操作的日期和時間。也可以通過給它賦一個NULL而使它設置為當前的日期和時間。查看章節(jié)6.2.2 Date 和 Time 類型。 參數(shù)M只影響一個TIMESTAMP列的顯示格式;它的值總是占用 4 個字節(jié)存儲。 注意,當TIMESTAMP(M)列的M是 8 或 14 時,它返回的是數(shù)字而其它的TIMESTAMP(M)列返回的是字符串。這僅僅是為了可以可靠地轉(zhuǎn)儲并恢復到其它格式的表中。查看章節(jié)6.2.2.2DATETIME、DATE和TIMESTAMP類型。TIME一個時間。范圍是'-838:59:59'到'838:59:59'。MySQL 以'HH:MM:SS'格式顯示TIME值,但是允許你使用字符串或數(shù)字來給TIME列賦值。查看章節(jié)6.2.2.3TIME類型。YEAR[(2|4)]一個 2 或 4 位數(shù)字格式的年(缺省為 4 位)。允許的值是1901到2155、0000(4 位年格式) 以及使用 2 位格式的 1970-2069 (70-69)。MySQL 以YYYY格式顯示YEAR值,但是允許你使用字符串或數(shù)字來給YEAR列賦值。(YEAR類型在 MySQL 3.22 之前不支持。) 查看章節(jié)6.2.2.4YEAR類型。

[NATIONAL] CHAR(M) [BINARY]一個定長的字符串,當存儲時,總是以空格填滿右邊到指定的長度。M的范圍是 0 到 255 (在 MySQL 3.23 版本之前為 1 到 255)。當該值被檢索時,尾部空格將被刪除。CHAR值根據(jù)缺省的字符集進行忽略大小寫的排索與比較,除非指定了關鍵詞BINARY。NATIONAL CHAR(或短形式NCHAR) 是以 ANSI SQL 方式定義一個CHAR列,它將使用缺省的字符集。這在 MySQL 中是默認的。

CHAR是CHARACTER的縮寫。 MySQL 允許以CHAR(0)類型建立一個列。一些老程序運行時必需一個列,卻又并不使用這個列的值,你就不得不為了適應它而建立該列,在這情況下,CHAR(0)將是很有益的。當需要一個列僅保存兩個值時:一個為CHAR(0)(該列沒有定義為NOT NULL),這將僅占用一個比特位來存儲 2 個值:NULL或""。查看章節(jié)6.2.3.1CHAR和VARCHAR類型。CHAR這是CHAR(1)的同義詞。

[NATIONAL] VARCHAR(M) [BINARY]一個變長的字符串。注意:尾部的空格在存儲時將會被刪除(這與 ANSI SQL 約規(guī)不同)。M的范圍是 0 到 255 (在 MySQL 4.0.2 之前的版本中是 1 到 255)。

VARCHAR值以大小寫忽略方式進行排索與比較,除非關鍵詞BINARY被指定。查看章節(jié)6.5.3.1 隱式的列定義變化。VARCHAR是CHARACTER VARYING的縮寫。查看章節(jié)6.2.3.1CHAR和VARCHAR類型。

TINYBLOBTINYTEXT一個BLOB或TEXT列,最大長度為 255 (2^8 - 1) 個字符。查看章節(jié)6.5.3.1 隱式的列定義變化。查看章節(jié)6.2.3.2BLOB和TEXT類型。

BLOBTEXT一個BLOB或TEXT列,最大長度為 65535 (2^16 - 1) 個字符。查看章節(jié)6.5.3.1 隱式的列定義變化。查看章節(jié)6.2.3.2BLOB和TEXT類型。

MEDIUMBLOBMEDIUMTEXT一個BLOB或TEXT列,最大長度為 16777215 (2^24 - 1) 個字符。查看章節(jié)6.5.3.1 隱式的列定義變化。查看章節(jié)6.2.3.2BLOB和TEXT類型。

LONGBLOBLONGTEXT一個BLOB或TEXT列,最大長度為 4294967295 (2^32 - 1) 個字符。查看章節(jié)6.5.3.1 隱式的列定義變化。注意,由于服務器/客戶端的協(xié)議以及 MyISAM 表通常有一個 16M 每通信包/表行的限制,你仍然不能使用這個類型的整個范圍。查看章節(jié)6.2.3.2BLOB和TEXT類型。ENUM('value1','value2',...)一個枚舉類型。一個僅能有一個值的字符串對象,這個值選自值列'value1'、'value2'、...、NULL或特殊的""出錯值。一個ENUM列可以有最大 65535 不同的值。查看章節(jié)6.2.3.3ENUM類型。SET('value1','value2',...)一個集合。一個能有零個或更多個值的字符串對象,其中每個值必須選自值列'value1'、'value2'、...。一個SET列可以有最大 64 個成員。查看章節(jié)6.2.3.4SET類型。

MySQL 支持所有的 ANSI/ISO SQL92 數(shù)字類型。這些類型包括準確數(shù)字的數(shù)據(jù)類型(NUMERIC、DECIMAL、INTEGER和SMALLINT),也包括近似數(shù)字的數(shù)據(jù)類型(FLOAT、REAL和DOUBLE PRECISION)。關鍵詞INT是INTEGER的同義詞,關鍵詞DEC是DECIMAL的同義詞。

NUMERIC和DECIMAL類型被 MySQL 以同樣的類型實現(xiàn),這在 SQL92 標準中是允許的。他們用于保存對準確精度有重要要求的值,例如與金錢有關的數(shù)據(jù)。當以它們中的之一聲明一個列時,精度和數(shù)值范圍可以(通常是)被指定;例如:

salary DECIMAL(5,2)

在這個例子中,5(精度(precision)) 代表重要的十進制數(shù)字的數(shù)目,2(數(shù)據(jù)范圍(scale)) 代表在小數(shù)點后的數(shù)字位數(shù)。在這種情況下,因此,salary列可以存儲的值范圍是從-99.99到99.99。(實際上 MySQL 在這個列中可以存儲的數(shù)值可以一直到999.99,因為它沒有存儲正數(shù)的符號)。

譯者注:

M 與D 對DECIMAL(M, D) 取值范圍的影響

類型說明 取值范圍(MySQL 3.23) 取值范圍(MySQL = 3.23)

DECIMAL(4, 1) -9.9 到 99.9 -999.9 到 9999.9

DECIMAL(5, 1) -99.9 到 999.9 -9999.9 到 99999.9

DECIMAL(6, 1) -999.9 到 9999.9 -99999.9 到 999999.9

DECIMAL(6, 2) -99.99 到 999.99 -9999.99 到 99999.99

DECIMAL(6, 3) -9.999 到 99.999 -999.999 到 9999.999

# 在MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范圍等于早期版本中的DECIMAL(M + 2, D) 的取值范圍。注釋結(jié)束:

在 ANSI/ISO SQL92 中,句法DECIMAL(p)等價于DECIMAL(p,0)。同樣的,在執(zhí)行被允許決定值p的地方,句法DECIMAL等價于DECIMAL(p,0)。MySQL 目前還不支持DECIMAL/NUMERIC數(shù)據(jù)類型的這些變體形式中的任一種。一般來說這并不是一個嚴重的問題,通過明確地控制精度和數(shù)值范圍可以得到這些類型的主要功能益處。

DECIMAL和NUMERIC值是作為字符串存儲的,而不是作為二進制浮點數(shù),以便保護這些值的十進制精確度。一個字符用于數(shù)值的每一位、小數(shù)點(如果scale 0) 和“-”符號(對于負值)。如果scale是 0,DECIMAL和NUMERIC值不包含小數(shù)點或小數(shù)部分。

DECIMAL和NUMERIC值的最大范圍與DOUBLE一致,但是對于一個給定的DECIMAL或NUMERIC列,它的實際范圍可制定該列時的precision或scale限制。當這樣的列被賦給了小數(shù)點的位數(shù)超過scale所指定的值時,該將根據(jù)scale進行四舍五入。當一個DECIMAL或NUMERIC列被賦與一個大小超過指定(或缺省)的precisionandscale的限止范圍時,MySQL 以該列范圍的端點值存儲該值。

mysql中float用什么類型

對于浮點列類型,在MySQL中單精度值使用4個字節(jié),雙精度值使用8個字節(jié)。

FLOAT類型用于表示近似數(shù)值數(shù)據(jù)類型。SQL標準允許在關鍵字FLOAT后面的括號內(nèi)選擇用位指定精度(但不能為指數(shù)范圍)。MySQL還支持可選的只用于確定存儲大小的精度規(guī)定。0到23的精度對應FLOAT列的4字節(jié)單精度。24到53的精度對應DOUBLE列的8字節(jié)雙精度。

MySQL允許使用非標準語法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。這里,“(M,D)”表示該值一共顯示M位整數(shù),其中D位位于小數(shù)點后面。例如,定義為FLOAT(7,4)的一個列可以顯示為-999.9999。MySQL保存值時進行四舍五入,因此如果在FLOAT(7,4)列內(nèi)插入999.00009,近似結(jié)果是999.0001。

MySQL將DOUBLE視為DOUBLE PRECISION(非標準擴展)的同義詞。MySQL還將REAL視為DOUBLE PRECISION(非標準擴展)的同義詞,除非SQL服務器模式包括REAL_AS_FLOAT選項。

為了保證最大可能的可移植性,需要使用近似數(shù)值數(shù)據(jù)值存儲的代碼應使用FLOAT或DOUBLE PRECISION,不規(guī)定精度或位數(shù)。

DECIMAL和NUMERIC類型在MySQL中視為相同的類型。它們用于保存必須為確切精度的值,例如貨幣數(shù)據(jù)。當聲明該類型的列時,可以(并且通常要)指定精度和標度;例如:

salary DECIMAL(5,2)

在該例子中,5是精度,2是標度。精度表示保存值的主要位數(shù),標度表示小數(shù)點后面可以保存的位數(shù)。

在MySQL 5.1中以二進制格式保存DECIMAL和NUMERIC值。

標準SQL要求salary列能夠用5位整數(shù)位和兩位小數(shù)保存任何值。因此,在這種情況下可以保存在salary列的值的范圍是從-999.99到999.99。

在標準SQL中,語法DECIMAL(M)等價于DECIMAL(M,0)。同樣,語法DECIMAL等價于DECIMAL(M,0),可以通過計算確定M的值。在MySQL 5.1中支持DECIMAL和NUMERIC數(shù)據(jù)類型的變量形式。M默認值是10。

DECIMAL或NUMERIC的最大位數(shù)是65,但具體的DECIMAL或NUMERIC列的實際范圍受具體列的精度或標度約束。如果此類列分配的值小數(shù)點后面的位數(shù)超過指定的標度允許的范圍,值被轉(zhuǎn)換為該標度。(具體操作與操作系統(tǒng)有關,但一般結(jié)果均被截取到允許的位數(shù))。

mysql中常見的數(shù)據(jù)類型

一:MySQL數(shù)據(jù)類型

MySQL中定義數(shù)據(jù)字段的類型對你數(shù)據(jù)庫的優(yōu)化是非常重要的

MySQL支持多種數(shù)據(jù)類型,大致可以分為三類:數(shù)值 日期/時間和字符串

二、數(shù)值類型

 1.整數(shù)類型

2.浮點數(shù)

如果希望保證值比較準確,推薦使用定點數(shù)數(shù)據(jù)類型。MySql中的浮點類型有float,double和real。他們定義方式為:FLOAT(M,D) 、 REAL(M,D) 、 DOUBLE PRECISION(M,D)。

FLOAT和DOUBLE中的M和D的取值默認都為0,即除了最大最小值,不限制位數(shù)。允許的值理論上是-1.7976931348623157E+308~-2.2250738585072014E-308、0和2.2250738585072014E-308~1.7976931348623157E+308。M、D范圍如下:

(MySql5.7實測,與IEEE標準計算的實際是不同的,下面介紹):M取值范圍為0~255。FLOAT只保證6位有效數(shù)字的準確性,所以FLOAT(M,D)中,M=6時,數(shù)字通常是準確的。如果M和D都有明確定義,其超出范圍后的處理同decimal。

D取值范圍為0~30,同時必須=M。double只保證16位有效數(shù)字的準確性,所以DOUBLE(M,D)中,M=16時,數(shù)字通常是準確的。如果M和D都有明確定義,其超出范圍后的處理同decimal。

CHAR值時,在它們的右邊填充空格以達到指定的長度。當檢索到CHAR值時,尾部的空格被刪除掉,所以,我們在存儲時字符串右邊不能有空格,即使有,查詢出來后也會被刪除。在存儲或檢索過程中不進行大小寫轉(zhuǎn)換。

三、時間日期類型(5)

該“0”值如下:

請點擊輸入圖片描述

四、各種類型占用的存儲

1.數(shù)值類型

 

請點擊輸入圖片描述

定點數(shù)的比較特殊,而且與具體版本也有關系,此處單獨解釋:

使用二進制格式將9個十進制(基于10)數(shù)壓縮為4個字節(jié)來表示DECIMAL列值。每個值的整數(shù)和分數(shù)部分的存儲分別確定。每個9位數(shù)的倍數(shù)需要4個字節(jié),并且“剩余的”位需要4個字節(jié)的一部分。下表給出了超出位數(shù)的存儲需求:

請點擊輸入圖片描述

2.時間日期

請點擊輸入圖片描述

從版本5.6.4開始,存儲需求就有所改變,根據(jù)精度而定。不確定部分需要的存儲如下:

請點擊輸入圖片描述

比如,TIME(0), TIME(2), TIME(4), 和TIME(6) 分別使用3, 4, 5, 6 bytes?!?/p>

3.字符串

請點擊輸入圖片描述

4.類型的選擇

為了優(yōu)化存儲,在任何情況下均應使用最精確的類型。

例如,如果列的值的范圍為從1到99999,若使用整數(shù),則MEDIUMINT UNSIGNED是好的類型。在所有可以表示該列值的類型中,該類型使用的存儲最少。

用精度為65位十進制數(shù)(基于10)對DECIMAL 列進行所有基本計算(+、-、*、/)。

使用雙精度操作對DECIMAL值進行計算。如果準確度不是太重要或如果速度為最高優(yōu)先級,DOUBLE類型即足夠了。為了達到高精度,可以轉(zhuǎn)換到保存在BIGINT中的定點類型。這樣可以用64位整數(shù)進行所有計算,根據(jù)需要將結(jié)果轉(zhuǎn)換回浮點值。

5.使用其他數(shù)據(jù)庫的SQL語句

為了使用為其它數(shù)據(jù)庫編寫的SQL執(zhí)行代碼,MySQL按照下表所示對列類型進行映射。通過這些映射,可以很容易地從其它數(shù)據(jù)庫引擎將表定義導入到MySQL中:

請點擊輸入圖片描述


網(wǎng)站欄目:mysql浮點型怎么打,mysql 浮點型
網(wǎng)站URL:http://weahome.cn/article/hcdehs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部