在MYSQL的information_schema.COLUMNS
表中,有NUMERIC_PRECISION和COLUMN_TYPE两列
对于int类型的列,NUMERIC_PRECISION显示的始终是10,而COLUMN_TYPE列中int(xxx)内的长度缺不一定。
两者有什么区别呢?在网上找了半天,发现了这篇文章(地址)。
NUMERIC_PRECISION才是这一列(如int)能存储数据的实际长度,
而COLUMN_TYPE中的比如int(11),这里11是指该字段的显示长度,int最长只能有10位,这是类型定死的,在10位前可以有一个符号,所以默认显示位数是11位。
如果我们在定义表结构,创建了一列为int(3)类型,那么实际上该列还是要占用4字节存储,最多存储10位数字,只是这一列默认显示的时候,会以3格宽度显示罢了。
另:字符串类型的数据没有这个问题。