不論是在工作,還是在面試中,都有可能面對建表/面試 對字段類型選擇的考慮
tinyint 1字節(jié) 有符號范圍-128到127,無符號范圍0到255
smallint 2字節(jié) 有符號范圍-32768到32767,無符號范圍0到65535
mediumint 3字節(jié) 有符號范圍-8388608到8388607,無符號范圍0到16777215
int 4字節(jié) 有符號范圍-2147483648到2147483647,無符號范圍0到4294967295
integer 4字節(jié) 同int
bigint 8字節(jié) 有符號范圍-9223372036854775808到9223372036854775807,無符號的范圍0到18446744073709551615
float 4字節(jié) 如果 X < = 24 或 8 如果 25 < = X < = 53 范圍-3.402823466E+38到-1.175494351E-38,0 和 1.175494351E-38到3.402823466E+38。M是顯示寬度而D是小數(shù)的位數(shù) 不支持無符號
double 8字節(jié) -1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308 不支持無符號
double precision 8字節(jié) 同double
decimal (D,M)每一位使用一個字符。M字節(jié)(D+2 , 如果M < D)
numeric 同decimal
date 3字節(jié) 支持范圍'1000-01-01'到'9999-12-31'。
MySQL以'YYYY-MM-DD'格式來顯示DATE值,但是允許你使用字符串或數(shù)字把值賦給DATE列。
datetime 8字節(jié) 支持范圍'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
MySQL以'YYYY-MM-DD HH:MM:SS'格式來顯示DATETIME值,但是允許你使用字符串或數(shù)字把值賦給DATETIME的列。
timestamp 4字節(jié) 范圍'1970-01-01 00:00:00'到2037年某時。
一個TIMESTAMP列對于記錄一個INSERT或UPDATE操作的日期和時間是有用的,你以可以通過賦給它一個NULL值設(shè)置它為當前的日期和時間。
time 3字節(jié) 范圍'-838:59:59'到'838:59:59'。
MySQL以'HH:MM:SS'格式來顯示TIME值,但是允許你使用字符串或數(shù)字把值賦給TIME列。
year 1字節(jié) 一個2或4位數(shù)字格式的年(缺省是4位)。允許的值是1901到2155,和0000(4位年格式),如果你使用2位,1970-2069( 70-69)。
MySQL以YYYY格式來顯示YEAR值,但是允許你把使用字符串或數(shù)字值賦給YEAR列。(YEAR類型在MySQL3.22中是新類型。)
char 1<=M<=255 字節(jié) 一個定長字符串,當存儲時,總是是用空格填滿右邊到指定的長度。
M的范圍是 1——255 個字符。
當值被檢索時,空格尾部被刪除。CHAR值根據(jù)缺省字符集以大小寫不區(qū)分的方式排序和比較,除非給出BINARY關(guān)鍵詞。
NATIONAL CHAR(短形式NCHAR)是ANSI SQL的方式來定義CHAR列應(yīng)該使用缺省字符集。這是MySQL的缺省。CHAR是CHARACTER的一個縮寫。
varchar L+1 字節(jié), L <= M和1 <= M <= 255 一個變長字符串。
當值被存儲時,尾部的空格被刪除(這不同于ANSI SQL規(guī)范)。
M的范圍是 1——65532 個字符,1個或2個字節(jié)用來保存字符串長度。
VARCHAR值根據(jù)缺省字符集以大小寫不區(qū)分的方式排序和比較,除非給出BINARY關(guān)鍵詞值。
見7.7.1 隱式列指定變化。VARCHAR是CHARACTER VARYING一個縮寫。
tinyblob, tinytext L+1字節(jié),L < 2^8
blob, text 一個BLOB或TEXT列,最大長度為65535(2^16-1)個字符
mediumblob,mediumtext 最大長度為16777215(2^24-1)個字符
longblob,longtext 最大長度為4294967295(2^32-1)個字符
enum 枚舉 1/2字節(jié) 取決于枚舉的數(shù)目 一個ENUM最多能有65535不同的值
set 占用字節(jié)數(shù),取決于成員數(shù)量 1 2 3 /8 字節(jié) 最多支持64個成員
字段應(yīng)用場景
text不能存儲二進制流數(shù)據(jù)
blob可以存儲 這是與text的區(qū)別