我的SQL create table命令中有一个语法错误,但是无法理解为什么?
CREATE TABLE E0 (
div VARCHAR(50),
date VARCHAR(50), hometeam VARCHAR(50), awayteam VARCHAR(50),
fthg VARCHAR(50), ftag VARCHAR(50), ftr VARCHAR(50),
hthg VARCHAR(50), htag VARCHAR(50), htr VARCHAR(50),
referee VARCHAR(50), hs VARCHAR(50),
as VARCHAR(50),
hst VARCHAR(50), ast VARCHAR(50), hf VARCHAR(50),
af VARCHAR(50), hc VARCHAR(50), ac VARCHAR(50),
hy VARCHAR(50), ay VARCHAR(50), hr VARCHAR(50),
ar VARCHAR(50), b365h VARCHAR(50), b365d VARCHAR(50),
b365a VARCHAR(50), bwh VARCHAR(50), bwd VARCHAR(50),
bwa VARCHAR(50), iwh VARCHAR(50), iwd VARCHAR(50),
iwa VARCHAR(50), lbh VARCHAR(50), lbd VARCHAR(50),
lba VARCHAR(50), psh VARCHAR(50), psd VARCHAR(50),
psa VARCHAR(50), whh VARCHAR(50), whd VARCHAR(50),
wha VARCHAR(50), vch VARCHAR(50), vcd VARCHAR(50),
vca VARCHAR(50), bb1x2 VARCHAR(50), bbmxh VARCHAR(50),
bbavh VARCHAR(50), bbmxd VARCHAR(50), bbavd VARCHAR(50), bbmxa VARCHAR(50), bbava VARCHAR(50), bbou VARCHAR(50), bbmx_2_5 VARCHAR(50), bbav_2_5 VARCHAR(50), bbmx_2_5 VARCHAR(50), bbav_2_5 VARCHAR(50), bbah VARCHAR(50), bbahh VARCHAR(50), bbmxahh VARCHAR(50), bbavahh VARCHAR(50), bbmxaha VARCHAR(50), bbavaha VARCHAR(50))
答案 0 :(得分:4)
as
,div
和date
是sql保留字(请参阅manual),如果不使用反引号转义,就不能拥有此类名称。
答案 1 :(得分:2)
其中一列名为AS,这是一个保留字。要么使用不同的名称,要么使用``like as
varchar(50)
答案 2 :(得分:1)
1)Div and AS
mysql reserved key必须是反引号
2)重复列bbmx_2_5
和bbav_2_5
删除
整个查询将是
CREATE TABLE E0 (`div` VARCHAR(50), date VARCHAR(50), hometeam VARCHAR(50), awayteam VARCHAR(50), fthg VARCHAR(50), ftag VARCHAR(50), ftr VARCHAR(50), hthg VARCHAR(50), htag VARCHAR(50), htr VARCHAR(50), referee VARCHAR(50), hs VARCHAR(50), `as` VARCHAR(50), hst VARCHAR(50), ast VARCHAR(50), hf VARCHAR(50), af VARCHAR(50), hc VARCHAR(50), ac VARCHAR(50), hy VARCHAR(50), ay VARCHAR(50), hr VARCHAR(50), ar VARCHAR(50), b365h VARCHAR(50), b365d VARCHAR(50), b365a VARCHAR(50), bwh VARCHAR(50), bwd VARCHAR(50), bwa VARCHAR(50), iwh VARCHAR(50), iwd VARCHAR(50), iwa VARCHAR(50), lbh VARCHAR(50), lbd VARCHAR(50), lba VARCHAR(50), psh VARCHAR(50), psd VARCHAR(50), psa VARCHAR(50), whh VARCHAR(50), whd VARCHAR(50), wha VARCHAR(50), vch VARCHAR(50), vcd VARCHAR(50), vca VARCHAR(50), bb1x2 VARCHAR(50), bbmxh VARCHAR(50), bbavh VARCHAR(50), bbmxd VARCHAR(50), bbavd VARCHAR(50), bbmxa VARCHAR(50), bbava VARCHAR(50), bbou VARCHAR(50), bbmx_2_5 VARCHAR(50), bbav_2_5 VARCHAR(50), bbah VARCHAR(50), bbahh VARCHAR(50), bbmxahh VARCHAR(50), bbavahh VARCHAR(50), bbmxaha VARCHAR(50), bbavaha VARCHAR(50))
答案 3 :(得分:0)
您的一个专栏as
是reserved keyword
答案 4 :(得分:0)
很多问题:
div
和date
使用反引号`。hs VARCHAR(50)
,保留关键字之后,不允许bbmx_2_5
和bbav_2_5
答案 5 :(得分:0)
MySQL有一些关键字reserved。
我们不能将它们用作数据库/表/字段名称。
有两种方法可以解决这个问题:
1)添加反引号。
2)预先填写父母姓名。
e.g。 databasename.tablename
OR
table.fieldName
但是,最好的方法是避免使用保留关键字。
如果您的字段名称为div
,则可以将其重命名为division
,如果
您的字段名称为date
,您可以将其重命名为created_date
。