2011-01-09 125 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

相關問題