整理了两天的mysql数据类型,仅以借鉴。如有错误,欢迎各位大佬斧正。
MYSQL数据类型 | ||||||||||||||||||||||||||||||||||||||||
类型 | 具体类型 | 解释 | 存储字节(byte) | |||||||||||||||||||||||||||||||||||||
整形 | tinyint | 有符号范围-2^7到2^7-1(-128到127)无符号范围0到2^8-1(0到255) | 1B | |||||||||||||||||||||||||||||||||||||
smallint | 有符号-2^15到2^15-1(-32768到32767) ,无符号0到2^16-1(0到65535) | 2B | ||||||||||||||||||||||||||||||||||||||
mediumint | 有符号-2^23到2^23-1(-8388608到8388607) ,无符号0到2^24-1(0到16777215) | 3B | ||||||||||||||||||||||||||||||||||||||
int和integer | 有符号-2^31到2^31-1(-2147483648到2,147,483,647) ,无符号0到2^32-1(0到4294967295) | 4B | ||||||||||||||||||||||||||||||||||||||
bigint | 有符号-2^63到2^63-1(-9223372036854775808到9223372036854775807),无符号0到2^64-1(0到18446744073709551615) | 8B | ||||||||||||||||||||||||||||||||||||||
浮点型 | double/real | double和float属于浮点数,MySQL中4字节为单精度,8字节为双精度。例如float(5,3)中5是精度表示数字长度,3是标度表示小数点后数长度。如果不写精度和标度,则会按照实际显示,如果有精度和标度,则会将数据四舍五入后插入,系统不报错,如果a字段是double或者float,那么SUM(a)将会计算不精确,REAL只是DOUBLE PRECISION的另一个名称。 | 8B | |||||||||||||||||||||||||||||||||||||
float | 4B | |||||||||||||||||||||||||||||||||||||||
定点型 | decimal | decimal和numeric属于定点数,精度更高,如果不设置精度和标度,刚按照默认的(10,0)进行操作,如果数据超过了精度和标度值,则会警告。其中decimal(M,D)中M表示数据的总长度(不包括小数点,2<M<66)D代表小数点后数长度(0<=D<=30) | 不定长 | |||||||||||||||||||||||||||||||||||||
numeric | 默认8B | |||||||||||||||||||||||||||||||||||||||
boolean型 | bit | 只能存0或1,插入数据时,插入true,false,数据库会相应的转换成1,0,查询也可以根据true或1来查询,得到的是0或1(非true或false) | 1bit,即1/8B | |||||||||||||||||||||||||||||||||||||
非二进制字符串类型 | char | CHAR类型是定长的,MySQL总是根据定义的字符串长度分配足够的空间。当存储CHAR值时,MySQL会删除所有的末尾空格。CHAR值会根据需要采用空格进行填充以方便比较。 | 不定长 | |||||||||||||||||||||||||||||||||||||
varchar | VARCHAR变长,节省了存储空间,所以对性能也有帮助。但是由于是变长的,在UPDATE时可能使行变得比原来更长,这就导致要做额外的工作,影响性能 | 不定长 | ||||||||||||||||||||||||||||||||||||||
二进制字符串类型 | binary | BINARY和VARBINARY与 CHAR和VARCHAR类型有点类似,不同的是BINARY和VARBINARY存储的是二进制的字符串,而非字符型字符串。也就是说,BINARY和VARBINARY没有字符集的概念,对其排序和比较都是按照二进制值进行对比。BINARY(N)和VARBINARY(N)中的N指的是字节长度,而CHAR(N)和VARCHAR(N)中N指的是的字符长度。比如一个char(1)可以存放一个字符‘我’,但是‘我’作为中文需要两个字节,如果用binary(1)则只能存‘我’的一半。 | 不定长 | |||||||||||||||||||||||||||||||||||||
varbinary | 不定长 | |||||||||||||||||||||||||||||||||||||||
日期格式型 | date | 只有年月日的时间,格式yyyy-MM-dd | -- | |||||||||||||||||||||||||||||||||||||
time | 只有时分秒的时间,格式HH:mm:ss(24小时制) | -- | ||||||||||||||||||||||||||||||||||||||
year | 只能是year(2)和year(4)两种类型,其余报错。1900<year(4)<2156,直接存入数据库,如果是year(2),输入0-69,自动加上2000年,即2000-2069年,若输入70-99,则自动加上1900年,即1970-1999 | -- | ||||||||||||||||||||||||||||||||||||||
timestamp | 表示yyyy-MM-dd HH:mm:ss类型的日期,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。可以使用show variables like '%time_zone%';来查询当前所在时区,CST即时中国时间,time_zone是东八区,如果改变当前时区,那么输出的时间将会发生变化。 | -- | ||||||||||||||||||||||||||||||||||||||
datetime | 表示yyyy-MM-dd HH:mm:ss类型的日期,对于DATETIME,不做任何改变,基本上是原样输入和输出,不受时区影响。 | -- | ||||||||||||||||||||||||||||||||||||||
二进制文件型 | tinyblob | 区分大小写的二进制文件字符串,使用blob系列需要修改mysql的配置文件,Windows、linux基本一样通过修改文件my.ini或my.cnf文件,在文件中增加 max_allowed_packet=10M(就是最大10M,mysql默认似乎1MB,增加前先查找一下确保没有设置过) | 255B | |||||||||||||||||||||||||||||||||||||
blob | 64KB | |||||||||||||||||||||||||||||||||||||||
mediumblob | 16MB | |||||||||||||||||||||||||||||||||||||||
longblob | 4GB | |||||||||||||||||||||||||||||||||||||||
非二进制文件型 | tinytext | 区分大小写的非二进制文件字符串 | 255B | |||||||||||||||||||||||||||||||||||||
text | 64KB | |||||||||||||||||||||||||||||||||||||||
mediumtext | 16MB | |||||||||||||||||||||||||||||||||||||||
longtext | 4GB | |||||||||||||||||||||||||||||||||||||||
枚举型 | enum | set,enum的数据类型都是字符串类型的对象,set是多项选择,enum是单项选择。其中set最多可以包含64个元素,并且可以任意取到集合中的元素。而enum则是只能取到集合中的某一个元素,最多包含65536个元素。其中1~8成员的集合,占1个字节。9~16成员的集合,占2个字节。17~24成员的集合,占3个字节。25~32成员的集合,占4个字节。33~64成员的集合,占8个字节。 | 不定长 | |||||||||||||||||||||||||||||||||||||
set | 不定长 | |||||||||||||||||||||||||||||||||||||||
point | ||||||||||||||||||||||||||||||||||||||||
linestring | ||||||||||||||||||||||||||||||||||||||||
polygon | ||||||||||||||||||||||||||||||||||||||||
geometry | ||||||||||||||||||||||||||||||||||||||||
multipoint | ||||||||||||||||||||||||||||||||||||||||
multilinestring | ||||||||||||||||||||||||||||||||||||||||
multipolygongeometrycollection | ||||||||||||||||||||||||||||||||||||||||