【问题标题】:Mysql (using putty) how I write code for numbers?Mysql(使用putty)我如何为数字编写代码?
【发布时间】:2013-10-15 22:36:48
【问题描述】:

我的英语道歉。我目前正在尝试在 putty 中创建一个数据库,对于我们使用 varchar 的单词,但是如果我们想插入数字呢?例如,我正在创建一个汽车数据库,其中包括汽车的制造年份、价格、制造和型号。

价格的正确语法是什么,我没有为它做正确的代码,因为我收到错误?

谢谢!

这是我的代码:

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
);

【问题讨论】:

  • MySQL 提供了许多数字类型——每一种都设计用于存储不同大小的数字。文档位于dev.mysql.com/doc/refman/5.0/en/integer-types.html。例如:price INT,yom TINYINT
  • 对于货币数据,请使用 NUMERIC 或 DECIMAL。请参阅answer
  • 谢谢大家,帮了我很多忙,我得经常查看mysql手册。

标签: php mysql database putty


【解决方案1】:

为了存储价格,您想使用 FLOAT。它们依赖于四舍五入,并且可以根据系统的硬件和/或软件配置具有可变精度。

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

价格有一个固定的小数,这就是为什么您需要像DECIMAL这样的固定小数数据类型。

要声明DECIMAL 列,您需要指定总位数以及您想要的小数位数。

例如:要存储 $199.95,该列需要为 DECIMAL(5,2)

这些本质上存储为整数19995,并在检索时添加小数点。这样您就不必担心由于浮点精度问题而随机获得/损失美分。

【讨论】:

    【解决方案2】:

    对于浮点类型,您必须指定 total 的最大位数,以及小数点右侧的位数,以逗号分隔。因此,对于 999999.99 的最高价格,您可以指定:

    price FLOAT(8,2) NULL

    这意味着总共 8 位数字,小数点右侧 2。

    如果您拥有数百万辆汽车(例如,1378599.99),那么我们需要price FLOAT(9,2) NULL

    【讨论】:

    • 所以价格应该是 price(9,2) null?
    • 我的错,我完全爱上了你的价格(价值)计划。现已修复,哈哈。
    • 不要使用 FLOAT 来存储价格!您将随机获得/损失一个货币单位的美分/分数。 Floating point numbers 不精确并且依赖于四舍五入。使用DECIMAL(9,2),其中 mySQL 将存储 无舍入整数 值,并在适当的位置显示小数。
    • 嗯,谢谢你的反对票,萨米奇。虽然你是对的,但 OP 确实询问了语法,而不是首选类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多