如何在SQL中表示浮点值

时间:2019-04-28 12:41:08

标签: mysql sql database

我试图在命令行中使用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)
);

它只是返回一个错误,指出“ ERROR 1064(42000):您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以获取在'Condition varchar(255)NOT附近使用正确的语法“空值, 价格float(9,2)NOT NULL, 主键(车辆位于第6行”

我的代码有什么问题? “ Price”和“ Engine_Size”列仅需为浮点/小数,因此不能为varchar,因为我只想插入数字。

2 个答案:

答案 0 :(得分:2)

这有效:

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中的保留字,因此我更改了列的名称。

答案 1 :(得分:1)

您的代码中唯一明显的问题是使用'condition'作为列名,因为condition是MySQL中的保留字。 您可以通过2种方式修复它:

  • 请勿将“ 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)
);

希望这会有所帮助