当前位置: 首页 > 面试题库 >

MySQL:为什么使用VARCHAR(20)而不是VARCHAR(255)?[重复]

贺飞
2023-03-14
问题内容

这个问题已经在这里有了答案

7年前关闭。

可能的重复:

对所有基于文本的字段使用通用varchar(255)有不利之处吗?

在MYSQL中,您可以为VARCHAR字段类型选择一个长度。可能的值为1-255。

但是,如果使用最大值而不是VARCHAR(20)的VARCHAR(255),它的优点是什么?据我所知,条目的大小仅取决于插入字符串的实际长度。

大小(字节)=长度+1

因此,如果在VARCHAR(255)字段中有单词“
Example”,则它将有8个字节。如果在VARCHAR(20)字段中具有它,那么它也将具有8个字节。有什么区别?

我希望你能帮助我。提前致谢!


问题答案:

签出:Varchar参考

简而言之,除非您在VARCHAR中使用超过255的大小(长度前缀需要另一个字节),否则差别不大。

长度表明对列中存储的数据的约束比其他任何约束更多。这也固有地限制了列的最大存储大小。恕我直言,长度应该对数据有意义。如果您存储的是社会保险号,则将长度设置为128是没有意义的,即使您实际存储的只是一个SSN,也不会花费任何存储空间。



 类似资料:
  • 问题内容: 是否可以将SQL Server 2008数据库中的列类型从更改为,而不必删除表并重新创建? 每当我尝试使用SQL Server Management Studio进行操作时,SQL Server Management Studio都会向我抛出一个错误-但是让我头疼的是,很高兴知道我是否可以更改类型而不必删除和创建。 谢谢 问题答案: 您应该能够使用TSQL做到这一点。 就像是

  • 我使用并有一个MySql db表,该表是用以下方式创建的:

  • 问题内容: 不久前,我问了一个有关SQL Server中的层次结构/版本号排序的问题。( 如何使用SQL Server查询一般地对“版本号”列进行排序 )。 在提交的答案中,有一个与TSQL编码挑战的链接与此相似。 在SQL2000解决方案中,作者演示了两种变体,一种使用并返回varchar,另一种使用varbinary。作者解释说他正在这样做,而没有解释为什么。 因此,我的问题是,方法上的主要区

  • 问题内容: 根据定义: VARCHAR:长度范围是1到255个字符。除非指定BINARY关键字,否则以不区分大小写的方式对VARCHAR值进行排序和比较。x + 1个字节 TINYBLOB,TINYTEXT:BLOB或TEXT列,最大长度为255(2 ^ 8-1)个字符x + 1个字节 因此,基于此,我创建了下表: 还是创建varchar或tinytext更好, 为什么 ? 是否相同: VARCH

  • 问题内容: 我正在使用该程序包从数据库查询文本列。该数据库基于Microsoft SQL Server 2008 R2构建。SQL中列的数据类型为。 但是,当我运行时: 在SQL中,我期望(对于第一行): 但是,当我这样做时: 它返回: 255 。 所以我的问题是,是什么导致了这种截断,我该如何避免呢?谢谢!! 问题答案: 好的,看来我已经找到了解决方法。经过更多Google搜寻后,我发现: SQ

  • 问题内容: 我最近遇到了一个由于数据库创建脚本中的输入错误而导致的问题,即在数据库中创建了而不是的列。 我以为0长度字符串字段会出错,但是我没有。无论如何,或者我将无法在此列中存储任何数据的目的是什么。 问题答案: 根据SQL-92标准不允许,但在MySQL中允许。从MySQL手册: MySQL允许您创建type的列。这主要在您必须与依赖于列存在但实际上不使用其值的旧应用程序兼容时很有用。当您需要