MySQL 數(shù)據(jù)類型
MySQL中定義數(shù)據(jù)字段的類型對你數(shù)據(jù)庫的優(yōu)化是非常重要的缠导。
MySQL支持多種類型唐责,大致可以分為三類:數(shù)值辖试、日期/時間和字符串(字符)類型蝎困。
數(shù)值類型
MySQL支持所有標準SQL數(shù)值數(shù)據(jù)類型揪罕。
這些類型包括嚴格數(shù)值數(shù)據(jù)類型(INTEGER蠢莺、SMALLINT雄可、DECIMAL和NUMERIC)购公,以及近似數(shù)值數(shù)據(jù)類型(FLOAT芯侥、REAL和DOUBLE PRECISION)泊交。
關(guān)鍵字INT是INTEGER的同義詞,關(guān)鍵字DEC是DECIMAL的同義詞柱查。
BIT數(shù)據(jù)類型保存位字段值廓俭,并且支持MyISAM、MEMORY唉工、InnoDB和BDB表研乒。
作為SQL標準的擴展,MySQL也支持整數(shù)類型TINYINT淋硝、MEDIUMINT和BIGINT雹熬。下面的表顯示了需要的每個整數(shù)類型的存儲和范圍错维。
類型
大小
范圍(有符號)
范圍(無符號)
用途
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)
單精度浮點數(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)
雙精度浮點數(shù)值
DECIMAL
對DECIMAL(M,D) 雕崩,如果M>D魁索,為M+2否則為D+2
依賴于M和D的值
依賴于M和D的值
小數(shù)值
日期和時間類型
表示時間值的日期和時間類型為DATETIME、DATE盼铁、TIMESTAMP粗蔚、TIME和YEAR。
每個時間類型有一個有效值范圍和一個"零"值捉貌,當(dāng)指定不合法的MySQL不能表示的值時使用"零"值支鸡。
TIMESTAMP類型有專有的自動更新特性,將在后面描述趁窃。
類型
大小(字節(jié))
范圍
格式
用途
DATE
3
1000-01-01/9999-12-31
YYYY-MM-DD
日期值
TIME
3
'-838:59:59'/'838:59:59'
HH:MM:SS
時間值或持續(xù)時間
YEAR
1
1901/2155
YYYY
年份值
DATETIME
8
1000-01-01 00:00:00/9999-12-31 23:59:59
YYYY-MM-DD HH:MM:SS
混合日期和時間值
TIMESTAMP
4
1970-01-01 00:00:00/2037 年某時
YYYYMMDD HHMMSS
混合日期和時間值牧挣,時間戳
字符串類型
字符串類型指CHAR、VARCHAR醒陆、BINARY瀑构、VARBINARY、BLOB、TEXT寺晌、ENUM和SET世吨。該節(jié)描述了這些類型如何工作以及如何在查詢中使用這些類型。
類型
大小
用途
CHAR
0-255字節(jié)
定長字符串
VARCHAR
0-65535 字節(jié)
變長字符串
TINYBLOB
0-255字節(jié)
不超過 255 個字符的二進制字符串
TINYTEXT
0-255字節(jié)
短文本字符串
BLOB
0-65 535字節(jié)
二進制形式的長文本數(shù)據(jù)
TEXT
0-65 535字節(jié)
長文本數(shù)據(jù)
MEDIUMBLOB
0-16 777 215字節(jié)
二進制形式的中等長度文本數(shù)據(jù)
MEDIUMTEXT
0-16 777 215字節(jié)
中等長度文本數(shù)據(jù)
LONGBLOB
0-4 294 967 295字節(jié)
二進制形式的極大文本數(shù)據(jù)
LONGTEXT
0-4 294 967 295字節(jié)
極大文本數(shù)據(jù)
CHAR和VARCHAR類型類似呻征,但它們保存和檢索的方式不同耘婚。它們的最大長度和是否尾部空格被保留等方面也不同。在存儲或檢索過程中不進行大小寫轉(zhuǎn)換陆赋。
BINARY和VARBINARY類類似于CHAR和VARCHAR沐祷,不同的是它們包含二進制字符串而不要非二進制字符串。也就是說攒岛,它們包含字節(jié)字符串而不是字符字符串赖临。這說明它們沒有字符集,并且排序和比較基于列值字節(jié)的數(shù)值值灾锯。
BLOB是一個二進制大對象兢榨,可以容納可變數(shù)量的數(shù)據(jù)。有4種BLOB類型:TINYBLOB顺饮、BLOB吵聪、MEDIUMBLOB和LONGBLOB。它們只是可容納值的最大長度不同领突。
有4種TEXT類型:TINYTEXT暖璧、TEXT、MEDIUMTEXT和LONGTEXT君旦。這些對應(yīng)4種BLOB類型,有相同的最大長度和存儲需求嘲碱。