mysql5.7最⼤字段_Mysql5.7版本中数据表字段可⽤的类型
为什么会有这个总结,因为在测试Mysql的字符串函数时发现,char 和 varchar 有些不同,⽹上搜索⼀番发现了各种char、varchar、nvarchar 类型的对⽐,还有⼀些奇奇怪怪的这⾥就不说了,然后我就开始了对这⼏种类型字符串的测试,接着就悲剧了,测试多次之后发
现创建为nvarchar类型的字段居然是varchar类型的,再查询官⽅⽂档后发现,当前版本(5.7.21)的Mysql根本就没有nvarchar类型的字段,⽩⽩浪费了时间,所以要把Mysql⽀持的字段列举在这⾥,⽅便后⾯查使⽤。
从13年开始⼯作到现在,数据库主要使⽤Mysql,关于常使⽤的字段类型⽆⾮ int、char、varchar、blob、datetime 这⼏种,⼯作之前
⽤的最多的是SqlServer,其次就是Oracle和db2了,当时数据库的规模也不⼤,也没有注意到字段都有哪些类型,基本也是使⽤上述⼏
种,因为今天在Mysql中的数据类型这栽了跟头,所以查了下官⽅⽂档,看看到底都有哪些类型。
⽀持类型
真是不查不知道,查询后发现当前版本(5.7.21-log MySQL Community Server)⽀持的数据类型居然有40种,这还是超出我的想象的,
以字典排序列举在此⽅便查:
bigint,binary,bit,blob,char,date,datetime,decimal,double,enum,float,geometry,geometrycollection,int,integer
类型简述
数字类型BIT[(M)]
⽐特值类型,M默认为1,范围是[1,64]。
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
单字节整数,有符号时范围是[-128,127],⽆符号时范围是[0,255]。
BOOL, BOOLEAN
布尔值类型,需要注意的是创建表时如果指定这两种类型会被⾃动转为TINYINT类型,0代表false,⾮0代表true。
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
两字节整数,有符号时范围是[-32768,32767],⽆符号时范围是[0,65535]。
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
三字节整数,有符号时范围是[-8388608,8388607],⽆符号时范围是[0,16777215],这个类型在编程语⾔中很少见。
INT[(M)] [UNSIGNED] [ZEROFILL]mysql下载什么版本的
四字节整数,有符号时范围是[-2147483648,2147483647],⽆符号时范围是[0,4294967295],与INTEGER等价。
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
⼋字节整数,有符号时范围是[-9223372036854775808,9223372036854775807],⽆符号时范围是[0, 18446744073709551615]。
SERIAL
是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE类型的别名,感觉可以直接拿来做主键。
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
⽤于存储精确⼩数,M表⽰有效数字位数,范围是[1,65],默认是10,D表⽰⼩数点后位数,范围是[0,30],默认是0。
NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]
是DECIMAL的别名,同样含义的还有DEC[(M[,D])] [UNSIGNED] [ZEROFILL]、FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]。
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
单精度浮点数,M表⽰有效数字位数,D表⽰⼩数点后位数,范围有三部分[-3.402823466E+38,-1.175494351E-38],0,
[1.175494351E-38,3.402823466E+38],该类型属于Mysql⾃⼰的扩展,依赖硬件和操作系统,指定UNSIGNED表⽰禁⽤负数。
FLOAT(p) [UNSIGNED] [ZEROFILL]
单精度浮点数,p⽤来表⽰精度,取值为0-24等价于没有M和D的FLOAT,取值为25-53等价于没有M和D的DOUBLE。
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
双精度浮点数,表⽰有效数字位数,D表⽰⼩数点后位数,范围有三部分[-1.7976931348623157E+308,-
2.2250738585072014E-308],0,[2.2250738585072014E-308, 1.7976931348623157E+308],该类型属于Mysql⾃⼰的扩展,依赖硬件和操作系统,指定UNSIGNED表⽰禁⽤负数。等价于DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL]。REAL[(M,D)] [UNSIGNED] [ZEROFILL]
⼀般情况等价于DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL],但如果SQL mode指定了REAL_AS_FLOAT,那么它等价于
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]。
⽇期和时间类型DATE
⽇期类型,展⽰格式为’YYYY-MM-DD’,⽀持的范围是[‘1000-01-01’ , ‘9999-12-31’]。
DATETIME[(fsp)]
⽇期时间格式,展⽰格式为’YYYY-MM-DD hh:mm:ss[.fraction],⽀持范围是[‘1000-01-01 00:00:00.000000’, ‘9999-12-31 23:59:59.999999’],fsp表⽰⼩数位数,默认是0,取值范围是[0,6]。
TIMESTAMP[(fsp)]
时间戳,范围是[‘1970-01-01 00:00:01.000000’ UTC, ‘2038-01-19 03:14:07.999999’ UTC],注意到起始秒数从1开始,是因为0被保留⽤来代表’0000-00-00 00:00:00’了,fsp表⽰⼩数位数,默认是0,取值范围是[0,6]。
TIME[(fsp)]
时间类型,展⽰格式为 ‘hh:mm:ss[.fraction]’,⽀持的范围是[‘-838:59:59.000000’, ‘838:59:59.000000’],fsp表⽰⼩数位数,默认是0,取值范围是[0,6]。
YEAR[(4)]
代表年份类型,展⽰格式为’YYYY’,⽀持的范围是[1901, 2155]和0000。
字符串类型[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
固定长度的字符串,M表⽰字符串最⼤长度,范围是(0,255],若实际长度不⾜M,实际串右侧会填充空格,M默认为1。
[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]
可变长度的字符串,M表⽰字符串最⼤长度,范围是(0, 65535],当存储UTF8编码中⽂时,⼀般需要3个字节存储⼀个汉字。
BINARY[(M)]
与CHAR类似,只是存储的是⼆进制字节串⽽⾮普通的字符串。
VARBINARY(M)]
与VARCHAR类似,只是存储的是⼆进制字节串⽽⾮普通的字符串。
TINYBLOB
字节串,最⼤长度是255。
TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
字符串,最⼤长度是255。
BLOB[(M)]
字节串,最⼤长度64K-1,若指定M,则会创建⼀个能存储M字节最⼩的BLOB类型,⽐如TINYBLOB。
TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
字符串,最⼤长度64K-1,若指定M,则会创建⼀个能存储M字节最⼩的BLOB类型,⽐如TINYTEXT。
MEDIUMBLOB
字节串,最⼤长度16M-1。
MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
字符串,最⼤长度16M-1。
LONGBLOB
字节串,最⼤长度4G-1。
LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
字符串,最⼤长度4G-1。
ENUM(‘value1’,’value2’,…) [CHARACTER SET charset_name] [COLLATE collation_name]
枚举值,⼀个字符串代表⼀个值,内部通过整数实现,理论上最多可以有65535个不同的值,但实际上这个值⼩于3000。
SET(‘value1’,’value2’,…) [CHARACTER SET charset_name] [COLLATE collation_name]
集合,包含⼀组字符串,其内部还是呈现为⼀个整数,最⼤可以有64个不同的字符串对象。
特殊数据类型
Mysql提供了GEOMETRY、POINT、LINESTRING、POLYGON等特殊类型来与OpenGIS类⼀⼀对应,⽤来存储⼀些图形数据,同时还有MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION可以表⽰这些集合,我感觉我是没机会⽤这些了,⽤到了再展开说吧。
Json数据类型
⾃从Mysql5.7.8之后添加的⼀种类型,可以存储{“k1”: “val”, “k2”: 110}形式的数据。
常⽤数据类型⼤⼩类型存储数据范围(只考虑⽆符号)单位TINYINT0-255整数
SMALLINT0-65535整数
MEDIUMINT0-16777215整数
INT0-4294967295整数
BIGINT0-18446744073709551615整数
DATETIME1000-01-01 00:00:00.000000 -> 9999-12-31 23:59:59.999999时间点
TIMESTAMP1970-01-01 00:00:01.000000 UTC -> 2038-01-19 03:14:07.999999 UTC.时间点
TIME-838:59:59.000000 -> 838:59:59.000000时间点
CHAR0-255字符数
VARCHAR0-65535字符数
BINARY0-255字节数
VARBINARY0-65535字节数
TINYBLOB255字节数
BLOB65535(64K-1)字节数MEDIUMBLOB16777215(16M-1)字节数LONGBLOB4294967295(4G-1)字节数

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。