大家好,又见面了,我是全栈君。
为什么会有这个总结,因为在测试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
,json
,linestring
,longblob
,longtext
,mediumblob
,mediumint
,mediumtext
,multilinestring
,multipoint
,multipolygon
,numeric
,point
,polygon
,real
,set
,smallint
,text
,time
,timestamp
,tinyblob
,tinyint
,tibytext
,varbinary
,varchar
,year
。
Mysql提供了GEOMETRY、POINT、LINESTRING、POLYGON等特殊类型来与OpenGIS类一一对应,用来存储一些图形数据,同时还有MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION可以表示这些集合,我感觉我是没机会用这些了,用到了再展开说吧。
自从Mysql5.7.8之后添加的一种类型,可以存储{“k1”: “val”, “k2”: 110}形式的数据。
类型 | 存储数据范围(只考虑无符号) | 单位 |
---|---|---|
TINYINT | 0-255 | 整数 |
SMALLINT | 0-65535 | 整数 |
MEDIUMINT | 0-16777215 | 整数 |
INT | 0-4294967295 | 整数 |
BIGINT | 0-18446744073709551615 | 整数 |
DATETIME | 1000-01-01 00:00:00.000000 -> 9999-12-31 23:59:59.999999 | 时间点 |
TIMESTAMP | 1970-01-01 00:00:01.000000 UTC -> 2038-01-19 03:14:07.999999 UTC. | 时间点 |
TIME | -838:59:59.000000 -> 838:59:59.000000 | 时间点 |
CHAR | 0-255 | 字符数 |
VARCHAR | 0-65535 | 字符数 |
BINARY | 0-255 | 字节数 |
VARBINARY | 0-65535 | 字节数 |
TINYBLOB | 255 | 字节数 |
BLOB | 65535(64K-1) | 字节数 |
MEDIUMBLOB | 16777215(16M-1) | 字节数 |
LONGBLOB | 4294967295(4G-1) | 字节数 |
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/111627.html原文链接:https://javaforall.cn