mysql数据类型与存储
http://dev.mysql.com/doc/refman/5.5/en/data-types.html 最近在做oceanbase与mysql的数据类型兼容工作,仔细看了下mysql的数据类型 mysql支持的数据类型分类: 1)numeric 2)date and time 3)string(character and byte) 4)spatial 1.numeric 1)Intege
http://dev.mysql.com/doc/refman/5.5/en/data-types.html
最近在做oceanbase与mysql的数据类型兼容工作,仔细看了下mysql的数据类型
mysql支持的数据类型分类:
1)numeric
2)date and time
3)string(character and byte)
4)spatial
1.numeric
1)Integer Types(exact value)—INTERGER,INT,SMALLINT,TINYINT,MEDIUMINT,BIGINT
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
INT[(M)] [UNSIGNED] [ZEROFILL] / INTEGER[(M)] [UNSIGNED] [ZEROFILL]
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
UNSIGNED:无符号类型,默认为SIGNED
ZEROFILL:数字长度不够的数据前面填充0,如果设置了,则默认为UNSIGNED类型。
SERIAL:BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
M:显示宽度
2)Fixed-Point Types (Exact Value) – DECIMAL, NUMERIC
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
DEC[(M[,D])] [UNSIGNED] [ZEROFILL]
NUMERIC是通过DECIMAL实现的
DECIMAL(precision,scale)
precision:有效数字位数
scale:小数点后的位数
DECIMAL(M)相当于DECIMAL(M,0)
DECIMAL相当于DECIMAL(M)
M默认为10,M最大值为65
D默认为0,最大值为30
3)Floating-Point Types (Approximate Value) – FLOAT, DOUBLE
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
FLOAT使用4个字节
DOUBLE使用8个字节
M表示最多可以存多少个数字,D表示小数点后的位数
4)Bit-Value Type – BIT
BIT[(M)]
M表示存储的位数
M的范围是1~64
实例:b'110001'
转换:b'101' BIT(6) b'000101'
BOOL,BOOLEAN
等同于TINYINT(1)
0表示false,非0值表示true
5)存储字节数
2.date and time
1)DATE, DATETIME, TIMESTAMP
->DATE
日期格式
范围:'1000-01-01' to '9999-12-31'
显示格式:'YYYY-MM-DD'
允许strings或number格式转换成DATE类型
->DATETIME
日期+时间
范围:'1000-01-01 00:00:00' to '9999-12-31 23:59:59'
显示格式:'YYYY-MM-DD HH:MM:SS'
->TIMESTAMP
时间戳
范围:'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
存储格式为从'1970-01-01 00:00:01'开始的秒数
2)TIME
时间
范围:'-838:59:59' to '838:59:59'
显示格式:'HH:MM:SS'
3)YEAR[(2|4)]
2个数字或4个数字
2个数字范围:70~69
4个数字范围:1970~2069
显示格式:YYYY or YY
4)存储字节数
3.string
CHARACTER:字符集
COLLATE:校验算法
ASCII:CHARACTER SET latin1.
UNICODE:CHARACTER SET ucs2.
1)CHAR,VARCHAR
[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]
charM范围:0~255,默认为1
varcharM范围:0~65535
2)BINARY,VARBINARY
BINARY(M)
VARBINARY(M)
同CHAR,VARCHAR,但是存储的是二进制类型
3)BLOB,TEST
TINYBLOB 二进制类型,最多支持255个字节,每个value用一个字节前缀表示字节数
BLOB[(M)] 二进制类型,最多支持65535个字节,每个value用两个字节前缀表示字节数
MEDIUMBLOB 二进制类型,最多支持16777215个字节(2^24-1)字节,用3个三字表示字节数
LONGBLOB 二进制类型,最多支持 4,294,967,295个字节(2^32-1)字节,用4个三字表示字节数
TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
文本类型,最多支持255个字节,每个value用一个字节前缀表示字节数
TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
文本类型,最多支持65535个字节,每个value用两个字节前缀表示字节数
MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
文本类型,最多支持16777215个字节(2^24-1)字节,用3个三字表示字节数
LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
文本类型,最多支持 4,294,967,295个字节(2^32-1)字节,用4个三字表示字节数
4)ENUM
ENUM('value1','value2',…) [CHARACTER SET charset_name] [COLLATE collation_name]
枚举类型,在内部是以整数实现的。最多支持65535个元素
5)SET
SET('value1','value2',…) [CHARACTER SET charset_name] [COLLATE collation_name]
可以有0个或多个值,在内部是以整数实现的。
6)存储字节数
原文地址:mysql数据类型与存储, 感谢原作者分享。
推荐阅读