mysql ---我应该使用哪种类型?

时间:2011-01-09 06:22:44

标签: mysql

当创建表的字段时,我不知道我应该在字段上使用哪种类型(int,char,varchar ....)和大小。例如:电子邮件,时间,地址,电话....等等。

3 个答案:

答案 0 :(得分:2)

不要对数字使用整数,不要将varchar用于可变宽度字符行。如果使用小于实际输入的大小,则会因丢失数据而节省磁盘空间。

答案 1 :(得分:2)

这是一套通用的经验法则。按列出的顺序应用它们:

  1. 如果是时间或日期,请使用TIME或DATE类型
  2. 如果您要对其进行数学运算,请使用数字类型,例如INTEGER,FLOAT,REAL或DECIMAL。电话号码或学生ID等号码不需要是数字类型,但如果需要,可以使用其中一些。如果您要添加,减去,乘以或比较数字范围,请务必使它们成为数字类型。如果你不这样做,它可能不需要是数字。一个很好的相关经验法则是,如果数字“00”与您的情况中的数字“0”相同,那么它应该是数字。如果这些是不同的数字(例如在某些情况下的房间号或学生ID),那么它不应该是数字。 (我将根据经验选择下面的数字类型。)
  3. 对于其他所有内容,请使用字符串类型。具体来说,如果您确切地知道长度或在几个字符内,请使用该长度的CHAR。
  4. 如果您不知道长度,请使用VARCHAR并选择合理的最大长度。也就是说,你确定的东西足够长,而不会变得愚蠢。例如,一个姓氏的VARCHAR(15)只是因为没有你的朋友的姓氏超过15个字符的声音,直到你需要插入Schwietzer-McCullough先生。但VARCHAR(100000)可能有点过分。对于姓氏,VARCHAR(50)的顺序可能是合适的,但VARCHAR(100)是合理的。
  5. 选择数字类型:

    1. 如果它是整数并且始终是整数,则选择INTEGER类型。同样,您必须根据它可能具有的最大值来选择大小。这里有一个页面:http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html,其中包含MySQL中不同大小的INT类型的最大值图表。
    2. 如果是十进制数,例如货币值,百分比,温度或大多数普通小数值,请使用DECIMAL。 (NUMERIC与MySQL中的DECIMAL相同。)您将选择两个数字(例如DECIMAL(6,2))。第一个数字是要存储的总位数。第二个数字是小数点右边的位数。也就是说,如果您需要存储大约1美元到10美元的牙膏价格,您可以使用DECIMAL(4,2)来存储0.00到99.99之间的数字。如果你必须存储可以包括分数美分并且相当高的股票价格,你可能想要DECIMAL(10,3),范围从0.000到9999999.999。
    3. 如果您的数字需要用科学记数法表示,并且您将在其中进行大量数学运算并且需要它有效,请使用REAL或DOUBLE。不要使用这些来存储价格或百分比或类似的东西(见2),因为它们会引入微妙的不准确性。但是如果你的答案从8x10 ^ -5到2.58x10 ^ 34不等,那么,对于这样的东西,请使用DOUBLEs。请注意,这些实际上并不是以X * 10 ^ Y的形式存储,而是以X * 2 ^ Y的形式存储,因为计算机以二进制形式工作,因此某些数字可能与它们的十进制表示略有不同。这就是我们不将它们用作货币的原因。
    4. 如果您有一个类似于3的数字,但是您真的需要存储空间,那么请使用FLOAT。实际上,在实践中,你可能永远不会使用FLOAT。他们就像DOUBLE,但只有一半。

答案 2 :(得分:-1)

好吧,除了时间之外,您可以对所有字段使用varchar字段。对于时间字段,您可以使用名为time的数据类型,因为这将有助于您轻松操作数据。