我试图在命令行中使用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,因为我只想插入数字。
答案 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种方式修复它:
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)
);
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)
);
希望这会有所帮助