我知道CHAR和VARCHAR的区别,
焦耳定长 可变长度(大小+1字节)
但是我想知道有一个可变长度选项的启示是什么,比如VARCHAR(50),VARCHAR(100),VARCHAR(255)
这在我看来毫无意义,因为实际使用的空间取决于存储在数据库中的值。
所以我的问题是:
( 1)将我的varchar设置为255是可以的。2)为什么要指定任何其他长度?
发布于 2010-07-01 21:05:26
1)如果您不想限制存储的varchar的最大大小,那么可以。有人说..。
2)在许多情况下,您希望为varchar的大小设置一个上限。假设您正在存储邮件列表,并且地址行的空间有限。通过为您的地址字段设置上限,您现在允许数据库为您强制设置最大地址行长度。
发布于 2010-07-01 21:02:18
摘录自MySQL文档
CHAR和VARCHAR类型相似,但存储和检索方式不同。在MySQL 5.0.3中,它们的最大长度以及是否保留了尾随空格。
CHAR和VARCHAR类型声明的长度指示要存储的字符的最大数量。例如,CHAR( 30 )最多可以容纳30个字符。
CHAR列的长度固定在创建表时声明的长度。长度可以是0到255之间的任意值。当存储CHAR值时,它们将以指定长度的空格填充.当检索CHAR值时,将移除尾随空格。
VARCHAR列中的值是可变长度字符串.长度可以指定为MySQL 5.0.3之前的0到255之间的值,以及5.0.3和更高版本中的0到65,535。VARCHAR在MySQL 5.0.3及更高版本中的有效最大长度取决于最大行大小(65,535字节,在所有列之间共享)和使用的字符集。
与CHAR不同,VARCHAR值存储为单字节或两字节长度前缀加数据。长度前缀表示值中的字节数。如果值不超过255个字节,列使用一个长度字节;如果值可能需要超过255个字节,则使用两个长度字节。
发布于 2012-11-28 11:50:59
CHAR诉VARCHAR
CHAR用于固定长度的大小变量。
VARCHAR用于可变长度大小变量。
例如。
create table emp
(f_name CHAR(20),
l_name VARCHAR(20)
);
insert into emp values('Suraj','Chandak');
select length(f_name), length(l_name) from emp;
Output will be
length(f_name) Length(l_name)
20 7CHAR诉VARCHAR的最佳答案
编辑
谢谢。
https://stackoverflow.com/questions/3161628
复制相似问题