以下内容从官网里都能找到,地址
1.整数类型(精确值)
包括TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT类型。
每个类型都有一个数值范围,超过这个范围,将存储这个范围里的最大值。
详细内容请看下表。
类型 | 存储(Byte) | 最小值(Signed/Unsigned) | 最大值(Signed/Unsigned) |
TINYINT | 1 | -128 / 0 | 127 / 255 |
SMALLINT | 2 | -32768 / 0 |
32767 / 65535 |
MEDIUMINT | 3 | -8388608 / 0 |
8388607 / 16777215 |
INT | 4 | -2147483648 / 0 |
2147483647 / 4294967295 |
BIGINT | 8 | -9223372036854775808 / 0 |
9223372036854775807 / 18446744073709551615 |
2.精准浮点数类型(精确值)
DECIMAL 和 NUMERIC 存储精准的数值,此类型被用在对数值精准要求很高的地方,比如货币数据。
DECIMAL(m,n),m表示位数,n表示小数部分。
比如:DECIMAL(5,2)表示的范围是-999.99 至 999.99
3.浮点数类型(近似值)
FLOAT 和 DOUBLE 类型表示近似的数字数值,在MySQL数据库里FLOAT占用4个字节,DOUBLE占用8个字节。
如果要插入999.00009到FLOAT(7,4)字段,那么近似值的结果是999.0001。
4.日期时间类型
请看表格内容
类型 | 存储(Byte) | 表示范围 | 其他说明 |
DATETIME | 8 | '1000-01-01 00:00:00' 至 '9999-12-31 23:59:59' | 包含日期和时间部分 |
TIMESTAMP | 4 | '1970-01-01 00:00:01' UTC 至 '2038-01-19 03:14:07' UTC | 包含日期和时间部分 |
DATE | 3 | '1000-01-01' 至 '9999-12-31' | 只有日期部分,没有时间部分 |
TIME | 3 | '-838:59:59' 至 '838:59:59' | 它不仅仅表示一天的时间,还表示两个事件之间的时间间隔(可能大于24小时) |
YEAR | 1 | YEAR(4)表示 1901 至 2155 YEAR(2)表示 1970 至 2070 |
5.字符串类型
此类型包含 CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM 和 SET
CHAR,表示存储字符固定长度,范围:0至255,如果字符长度小于指定长度,会在存储字符的右边补空格,
比如CHAR(30),表示指定存储字符长度为30,如果存储了小于30的字符,那么会在右边补空格。
VARCHAR,表示存储可变长度的字符,范围:0至65535,
它会用1个字节,或者2个字节来表示存储字符的长度,存储字符长度小于255,就用1个字节,大于255,就用2个字节.
详细内容如下:
Value | CHAR(4) |
Storage Required | VARCHAR(4) |
Storage Required |
---|---|---|---|---|
'' |
' ' |
4 bytes | '' |
1 byte |
'ab' |
'ab ' |
4 bytes | 'ab' |
3 bytes |
'abcd' |
'abcd' |
4 bytes | 'abcd' |
5 bytes |
'abcdefgh' |
'abcd' |
4 bytes | 'abcd' |
5 bytes |
BINARY 和 VARBINARY 跟 CHAR 和 VARCHAR相似,除此之外,它们用来存储二进制字符串。
BLOB 存储大的二进制对象,包括 TINYBLOB, MEDIUMBLOB, BLOB 和 LONGBLOB类型.
TEXT 存储大文本字符,包括 TINYTEXT, MEDIUMTEXT, TEXT 和 LONGTEXT类型.