2016-01-21 54 views
1

我在我的SQL創建表命令中有一個語法錯誤,但不明白爲什麼?SQL中的語法錯誤創建表命令

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

至少在ANSI SQL中'date'是一個保留字,需要用''date''分隔,或者在MySQL的情況下使用back-ticks。 – jarlh

回答

4

asdivdate是保留字SQL(見manual),你不能有這樣的名稱,而不使用反引號逃逸。

+0

感謝您的幫助:) –

+0

'日期'不是一個保留字,它是一個關鍵字。 –

2

其中一列被命名爲這是一個保留字。或者使用不同的名稱或環繞``像as VARCHAR(50)

0

的問題批號:

  • DATE和DIV是keywords;用反引號'使用divdate。 AS
  • 列名hs VARCHAR(50)之後是不允許的,保留關鍵字
  • 重複列bbmx_2_5bbav_2_5
+0

日期不是保留字,它是一個關鍵字。 –

1

1)Div and ASmysql reserved key它必須在反引號

2)重複柱bbmx_2_5bbav_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)) 
0

MySQL有一些關鍵字reserved

我們不能使用它們作爲數據庫/表/字段名稱。

有兩種方法來解決這個問題:

1)添加反引號。

2)預置父母名稱。

例如databasename.tablename

OR

table.fieldName 

但是,最好的辦法是避免使用保留關鍵字。

如果你的字段名稱爲div,您可以將其重命名爲division,如果

您的字段名稱是date,您可以將其重命名爲created_date