①: 数据库中的int(11) int类型占用4个字节,无符号位的范围为 -2147483648~2147483647 ,其中的11表示该数据类型指定的显示宽度,指定能够显示的数值中数字的个数.(注意:显示宽度和数据类型的取值范围是无关的.显示宽度只是指明mysql最大可能显示的数字个数,数值的位数小于指定的的宽度时会由空格填充;如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来.)
举例:创建新表,设置int(1),并且插入值为9999999,没有问题,查询也可以显示
注意在Navicat等软件中展示会受影响的
参考文档:MySQL中int(M)和tinyint(M)数值类型中M值的意义 - Duotian - 博客园
②: char类型的长度是固定的,varchar的长度是可变的。varchar比char节省空间,但是在效率上比char稍差些。既要获得效率即必须牺牲一点空间,这就是设计上的"以空间换时间".
char会自动删除插入数据的尾部空格,varchar不会删除尾部空格.
存储引擎对于选择char和varchar的影响:
对于MyISAM存储引擎:最好使用固定长度的数据列代替可变长度的数据列.这样可以使整个表静态化,从而使检索数据更快,用空间换时间.
对于InnoDB存储引擎:使用可变长度的数据列,因为InnoDB数据表的存储格式不分固定长度和可变长度,因此使用char不一定比使用varchar更好,但由于varchar是按照实际的长度存储,比较节省空间,所以对磁盘I/O和数据存储总量比较好.
③:浮点数float,double相对于定点数decimal的优势是:在长度一定的情况下,浮点数能表示更大的数据范围.但是由于浮点数容易产生误差,因此对精确度要求较高时,建议使用decimal来存储.decimal在mysql中是以字符串存储的,用于定义货币等对精确度要求较高的数据.
④:datetime的取值范围大于timestamp,因此存储范围较大的日期最好用datetime;
使用timestamp的时候当未指定列值时,mysql会把timestamp列设为当前的时间;
timestamp在空间上比datetime更有效;
datatime存储时间的时候不做任何改变直接存储,而timestamp存储的时候会先转换为世界时间然后存储,同样的取出来的时候做反向转换。
⑤:BLOB是二进制字符串,TEXT是非二进制字符串,两者均可存放大容量的信息.BLOB主要存储图片,音频信息等,而TEXT只能存储文本文件.
⑥:mysql中tinyint、smallint、int、bigint的区别
tinyint
从 -2^7 (-128) 到 2^7 - 1 (127) 的整型数据。存储大小为 1 个字节。
unsigned 是从 0 到 255 的整型数据。
所以建表的时候 只能是tinyint(3),哪怕你建tinyint(100),他最大还是3位这么多
smallint
从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。
unsigned 是从 0 到 65535 的整型数据。
所以建表的时候 只能是smallint(5),哪怕你建smallint(100),他最大还是5位这么多。
int
从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字).存储大小为 4 个字节。
unsigned 是从 0 到 4294967296 的整型数据。
所以建表的时候 只能是int(10),哪怕你建int(100),他最大还是10位这么多。
bigint
从 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807) 的整型数据(所有数字)。存储大小为 8 个字节。
unsigned 是(自己算吧)
所以建表的时候 只能是bigint(20),哪怕你建bigint(100),他最大还是20位这么多.
注意:
mysql提供了五种整型: tinyint、smallint、mediumint、int和bigint。int为integer的缩写。这些类型在可表示的取值范围上是不同的。 整数列可定义为unsigned从而禁用负值;这使列的取值范围为0以上。各种类型的存储量需求也是不同的。取值范围较大的类型所需的存储量较大。
mysql 提供三种浮点类型: float、double和decimal。与整型不同,浮点类型不能是unsigned的,其取值范围也与整型不同,这种不同不仅在于这些类型有最大 值,而且还有最小非零值。最小值提供了相应类型精度的一种度量,这对于记录科学数据来说是非常重要的(当然,也有负的最大和最小值)。