标签:不同的 标记 不能 并且 code 需求 系统 方式 使用
char(n)
和varchar(n)
中括号中n代表字符
的个数,并不代表字节
个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m3个字节,m?3<=255,m?3<=65535。使用 utf8mb4的话插入m个中文,会占用m4个字节。m?4<=255,m?4<=65535。-where
条件中的左侧空格进行判断,右侧末尾的空格会忽略根据字符的长度来判断,是考虑其长度的是否相近来确定选择char还是varchar,如何字段的长度基本都是一样或者其长度总是近似的可以选用char
即使使用Varchar数据类型,也不能够太过于慷慨!
比如你只使用到90个字符,VARCHAR(100)与VARCHAR(200)真的相同吗?结果是否定的。虽然他们用来存储90个字符的数据,其存储空间相同。但是对于内存的消耗是不同的。
VARCHAR(M)定义的列的长度为可变长字符串,M取值可以为0~65535之间,(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。
VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。
VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL。
varchar存储变长数据,但存储效率没有CHAR高。
如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。
从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。
效率来说基本是char>varchar>text,但是如果使用的是Innodb引擎的话,推荐使用varchar代替char
BLOB和TEXT类型需要1,2,3或4个字节来记录列值的长度,这取决于类型的最大可能长度。VARCHAR需要定义大小,有65535字节的最大限制;TEXT则不需要。如果你把一个超过列类型最大长度的值赋给一个BLOB或TEXT列,值被截断以适合它。
一个BLOB是一个能保存可变数量的数据的二进制的大对象。4个BLOB类型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB仅仅在他们能保存值的最大长度方面有所不同。
BLOB 可以储存图片,TEXT不行,TEXT只能储存纯文本文件。4个TEXT类型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT对应于4个BLOB类型,并且有同样的最大长度和存储需求。在BLOB和TEXT类型之间的唯一差别是对BLOB值的排序和比较以大小写敏感方式执行,而对TEXT值是大小写不敏感的。换句话说,一个TEXT是一个大小写不敏感的BLOB。
int(n)
这个n代表的是数字显示的宽度
,不代表实际存储空间大小,实际存储空间大小是固定的,它在数据库里面存储的都是4个字节的长度,也就是 32 位.
2^32 =4,294,967,296
大小的数据,宽度为10,即int(10)tinyint
smallint
在 MySQL 8.0 及以上的版本, AUTO_INCREMENT 列会自动添加一个隐式的 UNSIGNED 属性来保证插入的值非负。
标签:不同的 标记 不能 并且 code 需求 系统 方式 使用
原文地址:https://www.cnblogs.com/lyalong/p/14109087.html