2010-01-18 81 views
1

所以我创建了一个表来发表评论,我想知道。什么是评论细节的好类型?我把长篇文字。那么,为什么人们需要varchar如果longtext可以处理它呢?另外,我需要哪种类型的用户名?关于MySQL中的类型的问题

索引“primary”的用途是什么?索引的目的是什么?

更新: 让我们说一个评论实际上是一个审查。

回答

2

这是事实,TEXT可以处理你的VARCHAR或CHAR场放置任何输入。实际上,TEXT可以处理您想要放入DECIMAL,INT或几乎任何其他类型的数据。遵循这个逻辑,我们不妨使每一列成为TEXT类型。

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

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

在问候指标,尝试此链接:

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

0

这取决于您的系统中有什么“注释”。通常VARCHAR对于注释和用户名都是非常标准的。这限制你约255个字符,这通常是可以接受的。如果您在评论中需要更多的字符,可以将它改为文本,这会给您带来超过65k的字符。请参阅String Types Reference

+0

我怎么知道哪种类型允许哪些字符?那么,为什么当longtext重叠它的函数时会需要varchar?我敢肯定,世界上有很多事情都是这样运作的,但我只是想进一步挖掘我是否缺乏特殊原因。 – Strawberry 2010-01-18 03:11:43

+0

使用longtext发表评论或用户名喜欢将一支火箭筒带到水枪的战斗中。 – Sampson 2010-01-18 03:13:56

0

TEXT NOT NULL。这给了足够的空间,有2个字节的开销,并且通常没有问题。

关于TEXT

在比较,TEXT是空间扩展 以适应对象相比,恰好 像CHAR和VARCHAR。

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

BLOB和TEXT列不能有 DEFAULT值。

如果使用带有一个 TEXT数据类型BINARY属性,列被分配 列 字符集的二进制排序。

关于VARCHAR:

值在VARCHAR列是 可变长度字符串。可以将指定长度为 的值设置为MySQL 5.0.3之前的0至 255,0.0.3及更高版本中的0至 65,535。 在MySQL 5.0.3一个 VARCHAR的有效最大长度和后面是 受到的最大行大小 (65535个字节,这是其中 所有列共用)和 所使用的字符集。

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

0

看一看这个web page,它列出了所有的MySQL字段类型,并描述它们是什么,以及他们如何是彼此不同。