关于MySQL中类型的问题

时间:2010-01-18 03:04:49

标签: mysql

所以我正在创建一个评论表,我很想知道。什么是评论细节的好方法?我说道。那么,如果longtext可以处理它,为什么人们需要varchar呢?另外,我想要哪种类型的用户名?

索引的“主要”目的是什么?索引的目的是什么?

更新 假设评论实际上是评论。

4 个答案:

答案 0 :(得分:2)

TEXT可以处理您在VARCHAR或CHAR字段中输入的任何输入。事实上,TEXT可以处理您想要放入DECIMAL,INT或几乎任何其他类型的数据。遵循这个逻辑,我们也可以使每一列成为TEXT类型。

但这是一个错误。为什么?因为为预期输入使用适当的列类型允许数据库更好地优化查询,使用更少的磁盘空间并使数据模型更易于理解和维护。

关于问题:用户名列应该使用VARCHAR(20),因为您希望并期望大多数用户名都会缩短,通常不超过10到20个字符。对于评论栏(如电影评论或书评),TEXT类型是合适的,因为评论可以跨越单个段落到多个页面。

关于索引,请尝试以下链接:

http://20bits.com/articles/interview-questions-database-indexes/

答案 1 :(得分:0)

这取决于系统中的“评论”。通常,VARCHAR对于注释和用户名都非常标准。这限制你大约255个字符,这通常是可以接受的。如果您的评论中需要更多字符,则可以将其添加到文本中,这样可以为您提供超过65,000个字符。

有关详细信息,请参阅String Types Reference

答案 2 :(得分:0)

<强> TEXT NOT NULL 即可。这提供了足够的空间,有2字节的开销,并且通常没有问题。

关于TEXT

  

在比较时,TEXT是空间扩展的   完全符合比较对象   像CHAR和VARCHAR。

     

对于BLOB和TEXT列的索引,   您必须指定索引前缀   长度。对于CHAR和VARCHAR,一个前缀   长度是可选的。见7.4.2节,   “列索引”。

     

BLOB和TEXT列不能有   默认值。

     

如果您使用BINARY属性   TEXT数据类型,分配列   列的二进制排序规则   字符集。

关于VARCHAR:

  

VARCHAR列中的值是   变长字符串。长度   可以指定为0到0之间的值   在MySQL 5.0.3之前255,并且0到   5.0.3及更高版本中的65,535。   a的有效最大长度   MySQL 5.0.3及更高版本中的VARCHAR是   受最大行大小限制   (65,535字节,在其中共享   所有列)和字符集   使用

更多信息:http://dev.mysql.com/doc/refman/5.0/en/blob.html

答案 3 :(得分:0)

看看这个web page,它列出了所有的MySQL字段类型,并描述了它们是什么以及它们之间的区别。