首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我要为MySQL中的varchar选择255以外的任何长度?

为什么我要为MySQL中的varchar选择255以外的任何长度?
EN

Stack Overflow用户
提问于 2010-07-01 21:00:15
回答 9查看 40.5K关注 0票数 43

我知道CHAR和VARCHAR的区别,

焦耳定长 可变长度(大小+1字节)

但是我想知道有一个可变长度选项的启示是什么,比如VARCHAR(50)VARCHAR(100)VARCHAR(255)

这在我看来毫无意义,因为实际使用的空间取决于存储在数据库中的值。

所以我的问题是:

( 1)将我的varchar设置为255是可以的。2)为什么要指定任何其他长度?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-07-01 21:05:26

1)如果您不想限制存储的varchar的最大大小,那么可以。有人说..。

2)在许多情况下,您希望为varchar的大小设置一个上限。假设您正在存储邮件列表,并且地址行的空间有限。通过为您的地址字段设置上限,您现在允许数据库为您强制设置最大地址行长度。

票数 25
EN

Stack Overflow用户

发布于 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个字节,则使用两个长度字节。

票数 18
EN

Stack Overflow用户

发布于 2012-11-28 11:50:59

CHAR诉VARCHAR

CHAR用于固定长度的大小变量。

VARCHAR用于可变长度大小变量。

例如。

代码语言:javascript
复制
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                       7

CHAR诉VARCHAR的最佳答案

编辑

  • 可以为列设置最大上限。
  • 性能和存储都会产生影响。

谢谢。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3161628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档