如何在SQL中表示浮点数值

3
我将尝试使用命令行中的MySQL在Ubuntu中创建一个数据库,需要创建具有以下数据的表格:
CREATE TABLE Vehicles (
     Vehicle_ID int NOT NULL,
     Vehicle_Type VARCHAR(255) NOT NULL,
     Model_name VARCHAR(255) NOT NULL,
     Engine_Size float(1,1) NOT NULL,
     Condition VARCHAR(255) NOT NULL,
     Price float(9,2) NOT NULL,
     PRIMARY KEY (Vehicle_ID)
);

代码有问题。"Price" 和 "Engine_Size" 列必须是 float 或 decimal 值,因为您只想插入数字。请注意,SQL 语法错误可能是由于语句中的某些其他字符或关键字不正确导致的。检查您的 MySQL 服务器版本对应的手册以获取正确的语法,可以帮助您解决这个问题。

CONDITION 是一个保留字 - Paul Spiegel
ConditionMySQL保留字,必须用反引号括起来以作为列名使用。 - Nick
1
@HarryStanford 不相关,但你真的需要将这些列更改为“DECIMAL”。 “FLOAT”和“DOUBLE”应该很少使用,只有在经过深思熟虑的选择后才能使用。 - Michael - sqlbot
2个回答

3
这个可以运作:
CREATE TABLE Vehicles (
     Vehicle_ID int NOT NULL,
     Vehicle_Type VARCHAR(255) NOT NULL,
     Model_name VARCHAR(255) NOT NULL,
     Engine_Size int NOT NULL,
     Vehicle_Condition VARCHAR(255) NOT NULL,
     Price numeric(9,2) NOT NULL,
     PRIMARY KEY (Vehicle_ID)
);

注意事项:

  • 对于Price,您似乎需要numeric类型,而不是float类型,因为您正在指定精度和比例。
  • 对于Engine_Size,我不知道float(1, 1)表示什么。我猜测int是一个适当的类型。
  • Condition是MySQL中的保留字,因此我更改了列的名称。

我猜Engine_Size应该是指numeric(2,1) - Paul Spiegel
这怎么不是我关闭的那个问题的重复?FLOAT(M,D) 是完全有效的 MySQL,表定义中唯一的错误是使用了保留字 Condition,可以通过用反引号括起来来解决,就像在重复问题中描述的那样。 - Nick

1
您的代码中唯一明显的问题是使用了 MySQL 中的保留字 'condition' 作为列名。您可以通过以下两种方式进行修复:
  • 不要将 'condition' 作为列名:
CREATE TABLE Vehicles (
     Vehicle_ID int NOT NULL,
     Vehicle_Type VARCHAR(255) NOT NULL,
     Model_name VARCHAR(255) NOT NULL,
     Engine_Size float(1,1) NOT NULL,
     V_Condition VARCHAR(255) NOT NULL,       //Just an example feel free to use any another name
     Price float(9,2) NOT NULL,
     PRIMARY KEY (Vehicle_ID)
);

将“condition”放在反引号(``)中。
CREATE TABLE Vehicles (
     Vehicle_ID int NOT NULL,
     Vehicle_Type VARCHAR(255) NOT NULL,
     Model_name VARCHAR(255) NOT NULL,
     Engine_Size float(1,1) NOT NULL,
     `Condition` VARCHAR(255) NOT NULL,
     Price float(9,2) NOT NULL,
     PRIMARY KEY (Vehicle_ID)
);

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接