新聞中心
Python全棧之路系列之MySQL基本數(shù)據(jù)類型
MySQL中定義數(shù)據(jù)字段的類型對(duì)你數(shù)據(jù)庫(kù)的優(yōu)化是非常重要的。
MySQL支持多種類型,大致可以分為三類:
數(shù)字類型
日期和時(shí)間類型
字符串類型
數(shù)字類型
類型 | 大小 | 用途 |
---|---|---|
BIT | - | 二進(jìn)制 |
TINYINT | 1字節(jié) | 小整數(shù)值 |
INT or INTEGER | 4字節(jié) | 大整數(shù)值 |
BIGINT | 8字節(jié) | 極大整數(shù)值 |
DECIMAL | 對(duì)DECIMAL(M,D) ,如果M>D,為M+2否則為D+2 | 小數(shù)值 |
FLOAT | 4字節(jié) | 單精度浮點(diǎn)數(shù)值 |
DOUBLE | 8字節(jié) | 雙精度浮點(diǎn)數(shù)值 |
BOOL, BOOLEAN | - | 布爾值 |
BIT[(M)]
二進(jìn)制位(101001),m表示二進(jìn)制位的長(zhǎng)度(1-64),默認(rèn)m=1
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
小整數(shù),數(shù)據(jù)類型用于保存一些范圍的整數(shù)數(shù)值范圍:
范圍(有符號(hào)) | 范圍(無(wú)符號(hào)) |
---|---|
-128 to 127 | 0 to 255 |
特別的: MySQL中無(wú)布爾值,使用tinyint(1)構(gòu)造。
INT[(M)] [UNSIGNED] [ZEROFILL]
整數(shù),數(shù)據(jù)類型用于保存一些范圍的整數(shù)數(shù)值范圍:
范圍(有符號(hào)) | 范圍(無(wú)符號(hào)) |
---|---|
-2147483648 to 2147483647 | 0 to 4294967295 |
整數(shù)類型中的m僅用于顯示,對(duì)存儲(chǔ)范圍無(wú)限制。例如: int(5)
,當(dāng)插入數(shù)據(jù)2時(shí),select
時(shí)數(shù)據(jù)顯示為:00002
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
大整數(shù),數(shù)據(jù)類型用于保存一些范圍的整數(shù)數(shù)值范圍:
范圍(有符號(hào)) | 范圍(無(wú)符號(hào)) |
---|---|
-9223372036854775808 to 9223372036854775807 | 0 to 18446744073709551615 |
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
準(zhǔn)確的小數(shù)值,m是數(shù)字總個(gè)數(shù)(負(fù)號(hào)不算),d是小數(shù)點(diǎn)后個(gè)數(shù)。 m大值為65,d大值為30。
特別的:對(duì)于精確數(shù)值計(jì)算時(shí)需要用此類型decaimal能夠存儲(chǔ)精確值的原因在于其內(nèi)部按照字符串存儲(chǔ)。
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
單精度浮點(diǎn)數(shù)(非準(zhǔn)確小數(shù)值),m是數(shù)字總個(gè)數(shù),d是小數(shù)點(diǎn)后個(gè)數(shù)。
無(wú)符號(hào):
-3.402823466E+38 to -1.175494351E-38,
0
1.175494351E-38 to 3.402823466E+38
有符號(hào):
0
1.175494351E-38 to 3.402823466E+38
數(shù)值越大,越不準(zhǔn)確
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
雙精度浮點(diǎn)數(shù)(非準(zhǔn)確小數(shù)值),m是數(shù)字總個(gè)數(shù),d是小數(shù)點(diǎn)后個(gè)數(shù)。
無(wú)符號(hào):
-1.7976931348623157E+308 to -2.2250738585072014E-308
0
2.2250738585072014E-308 to 1.7976931348623157E+308
有符號(hào):
0
2.2250738585072014E-308 to 1.7976931348623157E+308
數(shù)值越大,越不準(zhǔn)確
BOOL, BOOLEAN
這些類型是TINYINT
的同義詞。零值被認(rèn)為是假的。非零值被認(rèn)為是正確的:
然而,真假的值僅僅是為了分別為1和0,別名,如下所示:
mysql> SELECT IF(0 = FALSE, 'true', 'false'); +--------------------------------+ | IF(0 = FALSE, 'true', 'false') | +--------------------------------+ | true | +--------------------------------+ 1 row in set (0.01 sec) mysql> SELECT IF(1 = TRUE, 'true', 'false'); +-------------------------------+ | IF(1 = TRUE, 'true', 'false') | +-------------------------------+ | true | +-------------------------------+ 1 row in set (0.00 sec) mysql> SELECT IF(2 = TRUE, 'true', 'false'); +-------------------------------+ | IF(2 = TRUE, 'true', 'false') | +-------------------------------+ | false | +-------------------------------+ 1 row in set (0.00 sec) mysql> SELECT IF(2 = FALSE, 'true', 'false'); +--------------------------------+ | IF(2 = FALSE, 'true', 'false') | +--------------------------------+ | false | +--------------------------------+ 1 row in set (0.00 sec)時(shí)間類型
表示時(shí)間值的日期和時(shí)間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每個(gè)時(shí)間類型有一個(gè)有效值范圍和一個(gè)”零”值,當(dāng)指定不合法的MySQL不能表示的值時(shí)使用”零”值。
類型 | 大小(字節(jié)) | 格式 | 用途 |
---|---|---|---|
DATE | 3 | YYYY-MM-DD | 日期值 |
DATETIME | 8 | YYYY-MM-DD HH | 混合日期和時(shí)間值 |
TIMESTAMP | 8 | YYYYMMDD HHMMSS | 混合日期和時(shí)間值,時(shí)間戳 |
TIME | 3 | HH | 時(shí)間值或持續(xù)時(shí)間 |
YEAR | 1 | YYYY | 年份值 |
類型 | 范圍 |
---|---|
DATE | '1000-01-01' to '9999-12-31' |
DATETIME | '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999' |
TIMESTAMP | '1970-01-01 00:00:01.000000' UTC to '2038-01-19 03:14:07.999999' |
TIME | '-838:59:59.000000' to '838:59:59.000000' |
YEAR | 1901 to 2155 |
字符串類型
類型 | 大小(字節(jié)) | 用途 |
---|---|---|
CHAR(M) | 0 to 255 | 固定長(zhǎng)度的字符串,即使數(shù)據(jù)小于M長(zhǎng)度,也會(huì)占用M長(zhǎng)度 |
VARCHAR(M) | 0 to 65535 | 一個(gè)可變長(zhǎng)度的字符串,M表示在字符的大列長(zhǎng)度 |
TEXT[(M)] | 0 to 65535 | 長(zhǎng)文本列 |
MEDIUMTEXT | 0 to 16777215 | 中等長(zhǎng)度文本列 |
LONGTEXT | 4294967295 or 4GB | 極大文本列 |
ENUM('value1','value2',...) | 枚舉類型 | |
SET('value1','value2',...) | 集合類型 |
VARCHAR(M)注
雖然VARCHAR(M)
使用起來(lái)較為靈活,但是從整個(gè)系統(tǒng)的性能角度來(lái)說,CHAR(M)
數(shù)據(jù)類型的處理速度更快,有時(shí)甚至可以超出VARCHAR(M)
處理速度的50%。因此,用戶在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)應(yīng)當(dāng)綜合考慮各方面的因素,以求達(dá)到最佳的平衡
ENUM('value1','value2',...)
SET('value1','value2',...)
SET是一個(gè)字符串對(duì)象,它可以有0
或更多
個(gè)值,每個(gè)值均必須選自一個(gè)允許值列表中,該列表在表創(chuàng)建時(shí)被指定。
參考:
http://www.cnblogs.com/wupeiqi/articles/5713315.html
http://www.runoob.com/mysql/mysql-data-types.html
http://dev.mysql.com/doc/refman/5.7/en/data-type-overview.html
#Python全棧之路
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
新聞名稱:2Python全棧之路系列之MysQl基本數(shù)據(jù)類型-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)URL:http://fisionsoft.com.cn/article/ipeog.html