MySQL 的數(shù)值數(shù)據(jù)類(lèi)型可以大致劃分為兩個(gè)類(lèi)別,一個(gè)是整數(shù),另一個(gè)是浮點(diǎn)數(shù)或小數(shù)。許多不同的子類(lèi)型對(duì)這些類(lèi)別中的每一個(gè)都是可用的,每個(gè)子類(lèi)型支持不同大小的數(shù)據(jù),并且 MySQL 允許我們指定數(shù)值字段中的值是否有正負(fù)之分或者用零填補(bǔ)。
表列出了各種數(shù)值類(lèi)型以及它們的允許范圍和占用的內(nèi)存空間。
類(lèi)型 大小 范圍(有符號(hào)) 范圍(無(wú)符號(hào)) 用途
TINYINT 1 字節(jié) (-128,127) (0,255) 小整數(shù)值
SMALLINT 2 字節(jié) (-32 768,32 767) (0,65 535) 大整數(shù)值
MEDIUMINT 3 字節(jié) (-8 388 608,8 388 607) (0,16 777 215) 大整數(shù)值
INT或INTEGER 4 字節(jié) (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整數(shù)值
BIGINT 8 字節(jié) (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 極大整數(shù)值
FLOAT 4 字節(jié) (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 單精度
浮點(diǎn)數(shù)值
DOUBLE 8 字節(jié) (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 雙精度
浮點(diǎn)數(shù)值
DECIMAL 對(duì)DECIMAL(M,D) ,如果M>D,為M+2否則為D+2 依賴(lài)于M和D的值 依賴(lài)于M和D的值 小數(shù)值
INT 類(lèi)型
在 MySQL 中支持的 5 個(gè)主要整數(shù)類(lèi)型是 TINYINT,SMALLINT,MEDIUMINT,INT 和 BIGINT。這些類(lèi)型在很大程度上是相同的,只有它們存儲(chǔ)的值的大小是不相同的。
MySQL 以一個(gè)可選的顯示寬度指示器的形式對(duì) SQL 標(biāo)準(zhǔn)進(jìn)行擴(kuò)展,這樣當(dāng)從數(shù)據(jù)庫(kù)檢索一個(gè)值時(shí),可以把這個(gè)值加長(zhǎng)到指定的長(zhǎng)度。例如,指定一個(gè)字段的類(lèi)型為 INT(6),就可以保證所包含數(shù)字少于 6 個(gè)的值從數(shù)據(jù)庫(kù)中檢索出來(lái)時(shí)能夠自動(dòng)地用空格填充。需要注意的是,使用一個(gè)寬度指示器不會(huì)影響字段的大小和它可以存儲(chǔ)的值的范圍。
萬(wàn)一我們需要對(duì)一個(gè)字段存儲(chǔ)一個(gè)超出許可范圍的數(shù)字,MySQL 會(huì)根據(jù)允許范圍最接近它的一端截短后再進(jìn)行存儲(chǔ)。還有一個(gè)比較特別的地方是,MySQL 會(huì)在不合規(guī)定的值插入表前自動(dòng)修改為 0。
UNSIGNED 修飾符規(guī)定字段只保存正值。因?yàn)椴恍枰4鏀?shù)字的正、負(fù)符號(hào),可以在儲(chǔ)時(shí)節(jié)約一個(gè)“位”的空間。從而增大這個(gè)字段可以存儲(chǔ)的值的范圍。
ZEROFILL 修飾符規(guī)定 0(不是空格)可以用來(lái)真補(bǔ)輸出的值。使用這個(gè)修飾符可以阻止 MySQL 數(shù)據(jù)庫(kù)存儲(chǔ)負(fù)值。
FLOAT、DOUBLE 和 DECIMAL 類(lèi)型
MySQL 支持的三個(gè)浮點(diǎn)類(lèi)型是 FLOAT、DOUBLE 和 DECIMAL 類(lèi)型。FLOAT 數(shù)值類(lèi)型用于表示單精度浮點(diǎn)數(shù)值,而 DOUBLE 數(shù)值類(lèi)型用于表示雙精度浮點(diǎn)數(shù)值。
與整數(shù)一樣,這些類(lèi)型也帶有附加參數(shù):一個(gè)顯示寬度指示器和一個(gè)小數(shù)點(diǎn)指示器。比如語(yǔ)句 FLOAT(7,3) 規(guī)定顯示的值不會(huì)超過(guò) 7 位數(shù)字,小數(shù)點(diǎn)后面帶有 3 位數(shù)字。
對(duì)于小數(shù)點(diǎn)后面的位數(shù)超過(guò)允許范圍的值,MySQL 會(huì)自動(dòng)將它四舍五入為最接近它的值,再插入它。
DECIMAL 數(shù)據(jù)類(lèi)型用于精度要求非常高的計(jì)算中,這種類(lèi)型允許指定數(shù)值的精度和計(jì)數(shù)方法作為選擇參數(shù)。精度在這里指為這個(gè)值保存的有效數(shù)字的總個(gè)數(shù),而計(jì)數(shù)方法表示 小數(shù)點(diǎn)后數(shù)字的位數(shù)。比如語(yǔ)句 DECIMAL(7,3) 規(guī)定了存儲(chǔ)的值不會(huì)超過(guò) 7 位數(shù)字,并且小數(shù)點(diǎn)后不超過(guò) 3 位。
忽略 DECIMAL 數(shù)據(jù)類(lèi)型的精度和計(jì)數(shù)方法修飾符將會(huì)使 MySQL 數(shù)據(jù)庫(kù)把所有標(biāo)識(shí)為這個(gè)數(shù)據(jù)類(lèi)型的字段精度設(shè)置為 10,計(jì)算方法設(shè)置為 0。
UNSIGNED 和 ZEROFILL 修飾符也可以被 FLOAT、DOUBLE 和 DECIMAL 數(shù)據(jù)類(lèi)型使用。并且效果與 INT 數(shù)據(jù)類(lèi)型相同。
字符串類(lèi)型
MySQL 提供了 8 個(gè)基本的字符串類(lèi)型,可以存儲(chǔ)的范圍從簡(jiǎn)單的一個(gè)字符到巨大的文本塊或二進(jìn)制字符串?dāng)?shù)據(jù)。
類(lèi)型 大小 用途
CHAR 0-255字節(jié) 定長(zhǎng)字符串
VARCHAR 0-255字節(jié) 變長(zhǎng)字符串
TINYBLOB 0-255字節(jié) 不超過(guò) 255 個(gè)字符的二進(jìn)制字符串
TINYTEXT 0-255字節(jié) 短文本字符串
BLOB 0-65 535字節(jié) 二進(jìn)制形式的長(zhǎng)文本數(shù)據(jù)
TEXT 0-65 535字節(jié) 長(zhǎng)文本數(shù)據(jù)
MEDIUMBLOB 0-16 777 215字節(jié) 二進(jìn)制形式的中等長(zhǎng)度文本數(shù)據(jù)
MEDIUMTEXT 0-16 777 215字節(jié) 中等長(zhǎng)度文本數(shù)據(jù)
LOGNGBLOB 0-4 294 967 295字節(jié) 二進(jìn)制形式的極大文本數(shù)據(jù)
LONGTEXT 0-4 294 967 295字節(jié) 極大文本數(shù)據(jù)
CHAR 和 VARCHAR 類(lèi)型
CHAR 類(lèi)型用于定長(zhǎng)字符串,并且必須在圓括號(hào)內(nèi)用一個(gè)大小修飾符來(lái)定義。這個(gè)大小修飾符的范圍從 0-255。比指定長(zhǎng)度大的值將被截短,而比指定長(zhǎng)度小的值將會(huì)用空格作填補(bǔ)。
CHAR 類(lèi)型可以使用 BINARY 修飾符。當(dāng)用于比較運(yùn)算時(shí),這個(gè)修飾符使 CHAR 以二進(jìn)制方式參于運(yùn)算,而不是以傳統(tǒng)的區(qū)分大小寫(xiě)的方式。
CHAR 類(lèi)型的一個(gè)變體是 VARCHAR 類(lèi)型。它是一種可變長(zhǎng)度的字符串類(lèi)型,并且也必須帶有一個(gè)范圍在 0-255 之間的指示器。CHAR 和 VARCHGAR 不同之處在于 MuSQL 數(shù)據(jù)庫(kù)處理這個(gè)指示器的方式:CHAR 把這個(gè)大小視為值的大小,不長(zhǎng)度不足的情況下就用空格補(bǔ)足。而 VARCHAR 類(lèi)型把它視為最大值并且只使用存儲(chǔ)字符串實(shí)際需要的長(zhǎng)度(增加一個(gè)額外字節(jié)來(lái)存儲(chǔ)字符串本身的長(zhǎng)度)來(lái)存儲(chǔ)值。所以短于指示器長(zhǎng)度的 VARCHAR 類(lèi)型不會(huì)被空格填補(bǔ),但長(zhǎng)于指示器的值仍然會(huì)被截短。
全國(guó)職稱(chēng)計(jì)算機(jī)考試速成過(guò)關(guān)系列套裝:W .. 定價(jià):¥133 優(yōu)惠價(jià):¥133.0 更多書(shū)籍 | |
全國(guó)職稱(chēng)計(jì)算機(jī)考試速成過(guò)關(guān)系列套裝:W .. 定價(jià):¥124 優(yōu)惠價(jià):¥124.0 更多書(shū)籍 |