MySQL常用数据类型简要-单机人生

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_39082172/article/details/102608537

MySQL常用数据类型简要-单机人生

字符串类型
char(N):定长,效率高,一般用于固定长度的表单提交数据存储。eg:身份证号,手机号,密码
varcher(N):不定长。效率偏低 5.0以上 可以存放65532个字节的数据
a) 存储限制
varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。
b) 编码长度限制
字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;
字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。
若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。
c) 行长度限制
导致实际应用中varchar长度限制的是一个行定义的长度。 MySQL要求一个行的定义长度不能超过65535。若定义的表长度超过这个值
Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。
就是非大字段类型的字段的bytes总和(即定义的字段的length的总合)大于64K了
解决:1.按照报错的提示将字段类型改为text 或 blobs(测试成功)
2.改变表的类型 将类型innoDB改为MyISAM (INNODB是表类型,支持事务,myisam也是表类型,不过不支持事务)(未测试)

日期和时间类型
date: 字节: 3 范围:1000-01-01 ~9999-12-31 格式:YYYY-MM-DD 用途: 日期值
time: 3 ‘-838:59:59’~‘838:59:59’ HH-MM-SS 时间值/持续时间
year: 1 1907~2155 YYYY 年份值
datetime: 8 1000-10-10 00:00:00~9999-12-31 23:59:59 混合日期和时间值
timestamp: 4 1970-01-01 00:00:00~2037年某时 混合日期和时间值,时间戳

blob类型
用于存储二进制数据,blob是一个二进制大对象,可容纳可变数量的数据
类型 最大字节
tinyblob 225
blob 65K
mediumblob 16M
longblob 4G

文本类型
tinytext 225
text 65K
mediumtext 16M
longtext 4G
数据的检索效率是:char>varchar>text

枚举类型
enum: 65535 64K
set 65 64K

猜你喜欢

转载自blog.csdn.net/qq_39082172/article/details/102608537