在我们使用mysql的时候,对字段的选用以及具体使用什么类型会很有疑问,这里按如下标准即可

类型以及所占字节如下类型

大小

CHAR

0-255字节定长字符串

VARCHAR

0-65535字节变长字符串

TINYBLOB

0-255字节不超过255个字符的二进制字符串

TINYTEXT

0-255字节短文本字符串

BLOB

0-65535字节二进制形式的长文本数据

TEXT

0-65535字节长文本数据

MEDIUMBLOB

0-16777215字节二进制形式的中等长度文本数据

MEDIUMTEXT

0-16777215字节中等长度文本数据

LONGBLOB

0-4294967295字节二进制形式的极大文本数据

LONGTEXT

0-4294967295字节极大文本数据

二进制的一些解析1B=8bit(1字节=8位)

1KB=1024B

1MB=1024KB

1GB=1024M

1TB=1024GB

MySQL 5.0以上版本堆varchar和char的处理

1、与编码有关,一般都用UTF-8

UTF-8:一个汉字=3个字节,英文是一个字节

GBK:一个汉字=2个字节,英文是一个字节

2、在MySQL中 varchar(n)和char(n)表示n个字符,无论汉字和英文,Mysql都能存入n个字符,仅是实际字节长度有所区别。

3、 MySQL 的 char(n) 和varchar(n) 可以直接存储 n 个汉字. 而不是 n/3或者 n/2 个,mysql 屏蔽了具体的存储细节,而直接以实际字符的个数来决定char存储的个数。

Text、MEDIUMTEXT、LONGTEXT

上面三个如果是UTF-8编码的话,最多可以储存的汉字数就必须除以三

类型

汉字数目

Text

21845

MEDIUMTEXT

5592405

LONGTEXT

143165576

实测:英文Text可以存放65535,要是存放65536个字母的话,会报如下错误

Datatruncation:Datatoolongforcolumn'content'at row1;nested exceptioniscom.mysql.jdbc.MysqlDataTruncation:Datatruncation:Datatoolongforcolumn'content'at row1

实测:全中文Text可以存放21845,要是存放21846个,也会报如下错误

Datatruncation:Datatoolongforcolumn'content'at row1;nested exceptioniscom.mysql.jdbc.MysqlDataTruncation:Datatruncation:Datatoolongforcolumn'content'at row1

证明上面的是正确的结论

结语

上面只是暂时的理解,也有可能有出错,所以以后会继续更新

总结起来,有几点:

1、经常变化的字段用varchar

2、知道固定长度的用char

3、尽量用varchar

4、超过255字符的只能用varchar或者text

5、能用varchar的地方不用text