MySQL 的数据类型,有哪些?

实数:

数据类型 多少个字节 范围(有符号) 范围(无符号) 默认值可设置为 是否必须指定 length
TINYINT 1 (-128,127) (0,255) '0' 可指定 length
SMALLINT 2 (-32 768,32 767) (0,65 535) '0' 可指定 length
MEDIUMINT 3 (-8 388 608,8 388 607) 0 ~ 16 777 215(1677 万) '0' 可指定 length
INT 或 INTEGER 4 (-2 147 483 648,2 147 483 647) 0 ~ 4 294 967 295(42 亿) '0' 可指定 length
BIGINT 8 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) 0 ~ 18 446 744 073 709 551 615(1844 亿亿,18446兆(一万亿等于一兆,亿亿就是:十兆;)) '0' 可指定 length

复数:

数据类型 多少个字节 范围(有符号) 范围(无符号) 默认值可设置为 是否必须指定 length,decimals
FLOAT 4(MySQL 数据类型(float)的注意事项 (-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) 可指定
DOUBLE 8 (-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) 可指定
DECIMAL DECIMAL(M总数字个数,D小数个数) ,每4个字节存9个数字,小数点占1个字节;
例如,DECIMAL(18,9)小数点两边各存储9个数字,所以小数点两边各占用4个字节,再加上小数点本身占用1个字节,总共占用9个字节。
依赖于M和D的值 依赖于M和D的值 可指定
REAL 可指定
NUMERIC 可指定

字符串类型(char(n)、varchar(n) 中的 n,4.0版本以下指:字节数,5.0 版本以上指:当前字符集的字符数)

varchar的最大长度为65535个字节,不同的编码所对应的最大可存储的字符数不同;
计算:表中varchar类型的字段能容纳的最大字符数?:https://www.cnblogs.com/cag2050/p/10401538.html

数据类型 大小 默认值可设置为 是否必须指定 length
CHAR 0-255 字节 '' 可指定 length
VARCHAR 0-65535 字节 '' 必须指定 length(因为默认大小是1个字节或字符)

二进制字符串类型(BINARY 和 VARBINARY 存储的是二进制字符串,与字符集无关;BINARY(n)、VARBINARY(n) 中的n,指的是:字节长度)

数据类型 大小 默认值可设置为 是否必须指定 length
BINARY 0-255 字节 可指定 length
VARBINARY 0-65535 字节 必须指定 length

TEXT 类型(长文本数据)

数据类型 大小 默认值可设置为(BLOB 和 TEXT 都不能有默认值) 是否必须指定 length
TINYTEXT 0-255 字节 不能有默认值 不能指定 length
TEXT 0-65535 字节 不能有默认值 可指定 length
MEDIUMTEXT 0-16 777 215字节(1677 万字节) 不能有默认值 不能指定 length
LONGTEXT 0-4 294 967 295字节(42 亿字节) 不能有默认值 不能指定 length

BLOB 类型(二进制形式的长文本数据)

数据类型 大小 默认值可设置为(BLOB 和 TEXT 都不能有默认值) 是否必须指定 length
TINYBLOB 0-255 字节 不能有默认值 不能指定 length
BLOB 0-65535 字节 不能有默认值 可指定 length
MEDIUMBLOB 0-16 777 215字节(1677 万字节) 不能有默认值 不能指定 length
LONGBLOB 0-4 294 967 295字节(42 亿字节) 不能有默认值 不能指定 length

日期和时间类型

类型 大小(字节) 范围 格式 默认值可设置为 是否必须指定 fsp
DATE 3 1000-01-01 ~ 9999-12-31 YYYY-MM-DD 不能指定
TIME 3 -838:59:59 ~ 838:59:59(此范围原因:
https://www.oschina.net/question/195038_183439
https://dev.mysql.com/doc/refman/8.0/en/time.html
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_sec-to-time)
HH:MM:SS 可指定
YEAR 1 1901 ~ 2155 YYYY 不能指定
DATETIME 8 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
(DATETIME 存储的是整数,与时区无关)
(以'YYYY-MM-DD HH:MM:SS'还是YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的上下文被使用)
YYYY-MM-DD HH:MM:SS 可指定
TIMESTAMP 4 1970-01-01 00:00:00 ~ 2038-01-19
结束时间是第 2147483647 秒(此数计算方法:2的31次方减1),
北京时间:2038-1-19 11:14:07,
格林尼治时间:2038年1月19日 凌晨 03:14:07
(TIMESTAMP 存储是UTC时间戳,与时区相关;具体的时分秒,不同的时区有不同的值)
(以'YYYY-MM-DD HH:MM:SS'还是YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的上下文被使用)
(推荐用 TIMESTAMP:TIMESTAMP 使用 DATETIME 一半的空间;能保存时区;拥有特殊的自动更新能力)
YYYYMMDD HHMMSS DEFAULT '0000-00-00 00:00:00'DEFAULT CURRENT_TIMESTAMPDEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
(说明:CURRENT_TIMESTAMP 等价于:CURRENT_TIMESTAMP(), NOW(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP, LOCALTIMESTAMP()
可指定

BIT 类型

数据类型 大小 默认值可设置为 是否必须指定 length
BIT 可指定 length

ENUM、SET

数据类型 大小 设置值
ENUM ENUM(value1,value2,value3,...)
SET SET(value1,value2,value3,...)

JSON 类型(从 MySQL 5.7.8 开始支持)

数据类型 大小 默认值可设置为 是否必须指定 length
JSON 不能指定 length

posted on 2019-02-13 10:59  cag2050  阅读(163)  评论(0编辑  收藏  举报

导航