您好我是一般的SQL和编码新手,我在代码中看到错误,我似乎无法弄明白。
DROP TABLE IF EXISTS record, artist;
CREATE TABLE artist (
id INT AUTO_INCREMENT,
first_name VARCHAR(50),
last_name VARCHAR(50),
PRIMARY KEY (id)
);
CREATE TABLE record (
id INT AUTO_INCREMENT,
title VARCHAR(50),
artist_id INT,
genre TINYTEXT,
year YEAR(4),
price DECIMAL(10, 2) unsigned,
PRIMARY KEY (id),
FOREIGN KEY (artist_id)
REFERENCES artist (id)
);
CREATE TABLE order (
id INT AUTO_INCREMENT,
record_id INT,
quantity INT unsigned,
total DECIMAL(10, 2) unsigned,
PRIMARY KEY (id),
FOREIGN KEY (record_id)
REFERENCES record (id)
);
显示的错误是:
错误1064(42000):您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在附近使用(' order)
id INT AUTO_INCREMENT,
record_id INT,
数量INT未签名,
总D'在第1行
我知道它告诉我错误的确切位置,并且我知道这是一个语法错误,但由于某种原因,我似乎无法理解错误的确切位置或内容。我尝试过添加“订购”功能。使用DROP TABLE IF EXISTS
,但只会出现更多错误。我知道这可能是非常明显的事情,所以我很抱歉,但我很失落。
答案 0 :(得分:1)
order
是SQL中的保留字。您可以通过使用前向引号将其保护来保护它:
CREATE TABLE `order` (
id INT AUTO_INCREMENT,
record_id INT,
quantity INT unsigned,
total DECIMAL(10, 2) unsigned,
PRIMARY KEY (id),
FOREIGN KEY (record_id)
REFERENCES record (id)
);
或更好的是,只需找到一个不是保留字的名称,例如orders
:
CREATE TABLE orders (
id INT AUTO_INCREMENT,
record_id INT,
quantity INT unsigned,
total DECIMAL(10, 2) unsigned,
PRIMARY KEY (id),
FOREIGN KEY (record_id)
REFERENCES record (id)
);