mysql 数据库中数据类的长度的解释

问题:定义数据库表时为什么要有字段长度这个选项,数据类型本身不就是有范围的吗?
字段长度的单位是什么啊?字节?

比如我定义了个int型的字段,int本身4个字节,但是我选择字段长度10,这不是矛盾吗?



 

如果不指定长度,数据库在存储的时候都必须给每个字段预留最大的存储空间,这样极大的浪费了空间,也加大了数据库本身管理的难度。
如 varchar2.假如最大长度为4800,如果不指定长度,每个字段都必须预留这么大的空间(包括有些只能用的极少空间的字段),这样极大的浪费了资源,对数据库本身而言也增加了管理资源。
其实就是一句话:用多少,申请多少。你不觉得这样更节约吗?  


问题:


这里字段长度的单位是字节吧,比如在mysql中int默认是4个字节,能表示2^32范围的数,
我声明一个int型字段,却在括号里写10或100,反正就是超过4的一个值,怎么执行时数据库不会报错?
指定的长度不应该超过该类型的最大长度吧,是不是这道理?

还有个问题:int(10)是表示值的大小不超过10个字节所表示范围,还是字符位数不超过10个?比如23313这个值只有5位         所谓的字段长度是设置的字节数还是字符位数?  



字节




那么一个中文占几个字节呢?

一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间.
符号:英文标点2占一个字节,中文标点占两个字节.
不同的编码里面汉字长度是不同的,
国家标准GB2312: 一个汉字=2个字节
UTF-8:一个汉字=3个字节






你可能感兴趣的:(mysql 数据库中数据类的长度的解释)