2013-10-15 21 views
0

我的英語道歉。我目前正在嘗試在putty中創建一個數據庫,用於我們使用varchar的單詞,但是如果我們想要插入數字呢?例如,我正在創建一個汽車數據庫,其中包括汽車的製造年份,價格,製造和型號。Mysql(使用putty)我如何編寫數字代碼?

什麼是價格正確的語法,我沒有做正確的代碼,因爲我收到一個錯誤?

謝謝!

這是我的代碼:

CREATE TABLE cars(
    cars_id int(10) UNSIGNED not null AUTO_INCREMENT PRIMARY KEY, 
    make VARCHAR(25) not null, 
    model VARCHAR(25) not null, 
    price(value) null float, 
    yom varchar(25) not null 
); 
+1

MySQL提供了許多數字類型 - 每個都是爲存儲不同大小的數字而設計的。文檔位於http://dev.mysql.com/doc/refman/5.0/en/integer-types.html。例如:price INT,yom TINYINT –

+3

對於貨幣數據使用NUMERIC或DECIMAL.See this [answer](http://stackoverflow.com/questions/13030368/best-data-type-to-store-money-values-in -mysql) –

+0

謝謝你們,幫助我很多,我將不得不更頻繁地檢查mysql手冊。 –

回答

-1

對於float類型,你必須指定位數max和數字的小數點右側,用逗號分隔的數量。因此,爲999999.99最高價格應指定:

price FLOAT(8,2) NULL

這意味着8位總,2到小數點右邊。

如果您的汽車數以百萬計(例如1378599.99),那麼我們需要price FLOAT(9,2) NULL

+0

所以價格是價格(9,2)空? –

+0

我的不好,我完全爲你的價格(價值)計劃而下跌。現在修正了大聲笑。 – Jason

+0

**請勿使用FLOAT存儲價格!**您將隨機獲得/損失貨幣單位的美分/分數。 [浮點數](http://dev.mysql.com/doc/refman/5.0/en/floating-point-types.html)是不精確的,並且依賴於四捨五入。使用['DECIMAL(9,2)'](http://dev.mysql.com/doc/refman/5.0/en/fixed-point-types.html),其中mySQL將存儲* integer *值,其中* no四捨五入*並在適當的地方用小數表示。 – Sammitch

0

對於存儲價格你不是想要使用FLOAT。它們依賴於舍入,並且可以根據系統的硬件和/或軟件配置而具有可變精度。

http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html

價格有固定十進制這就是爲什麼你需要一個像DECIMAL固定小數數據類型。

要聲明DECIMAL列,您需要指定總位數和小數位數。

例如:要存儲199.95美元,該列需要是DECIMAL(5,2)

這些實質上存儲爲一個整數19995並且在檢索時添加小數點。通過這種方式,您不必擔心由於浮點精度問題而隨機獲得/丟失分。