2011-01-09 154 views
0

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

+3

猜测,至少...? – BoltClock 2011-01-09 06:23:49

+0

显然你必须使用**最合适的**类型。 – zerkms 2011-01-09 06:28:29

回答

2

这里有一套一般的经验法则。在列出的顺序应用它们:

  1. 如果它是一个时间或日期,使用时间或日期类型
  2. 如果你打算做就可以了数学,用一个数值类型,如整数,浮点数, REAL或DECIMAL。诸如电话号码或学生证号码等数字不需要是数字类型,但其中一些可以是你想要的。如果你要添加,减去,乘,或比较范围的数字,绝对使它们的数字类型。如果你不打算那么它可能不需要数字。一个很好的相关经验法则是,如果数字“00”与您的情况的数字“0”相同,那么它应该是数字。如果这些数字不同(例如某些情况下的房间号码或学生证件),那么它不应该是一个数字。 (我会根据经验法则选择下面的数字类型。)
  3. 对于其他所有情况,请使用字符串类型。具体来说,如果您确切地知道长度或在几个字符内知道长度,请使用该长度的CHAR。
  4. 如果您不知道长度,请使用VARCHAR并选择合理的最大长度。也就是说,你肯定会足够长的时间,而不会感到无聊。例如,仅仅因为没有你的朋友的姓氏超过15个字符,姓氏的VARCHAR(15)听起来就会发现,直到你需要插入Schwietzer-McCullough先生。但是VARCHAR(100000)可能是矫枉过正的。对于姓氏,VARCHAR(50)的顺序可能是合适的,但VARCHAR(100)是合理的。

选择数值类型:

  1. 如果它是一个整数,而且将永远是一个整数,选择一个整数类型。再次,您必须根据其可能具有的最大价值来选择尺寸。这里有一个页面: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,那么是的,对于那样的东西,使用DOUBLE。需要警告的是,这些实际上并不是以X * 10^Y的形式存储的,而是因为计算机以二进制形式工作,所以一些数字可能与它们的十进制表示形式稍有不同。这就是为什么我们不把它们用于货币。
  4. 如果你有一个类似于3的数字,但是你确实需要存储空间,那么使用FLOAT。真的,在实践中,你可能永远不会使用FLOAT。他们像DOUBLE,但是大一半。
2

不要对数字使用整数,也不要将varchar用于可变宽度的字符行。如果您使用比实际输入更小的大小,您将通过丢失数据来节省磁盘空间。

-1

那么,您可以使用varchar字段除时间以外的所有字段。对于时间字段,您可以使用称为时间的数据类型,因为这将帮助您轻松操作数据。

+0

这个问题最糟糕的建议。 – zerkms 2011-01-09 06:49:02

相关问题