SQL列名与数据类型的名称相同 - 导致错误

时间:2013-11-15 23:41:22

标签: mysql sql database create-table table-structure

我是SQL的新手,在创建表结构时遇到了问题。

我想创建一个包含四列的表格:idtextdatereplace。问题是这在MySQL中给我一个错误,我认为因为单词TEXTDATE也是数据类型的名称而REPLACE是SQL中使用的另一个术语所以MySQL变得混乱关于我的列名应该是什么或者没有意识到我给出的名字是实际名称。有什么方法可以解决这个问题,以获取我想要的列名,而不必将列调用其他内容,然后在创建后手动更改它们吗?

这是我的SQL:

CREATE TABLE message (
    id INT UNIQUE AUTO_INCREMENT NOT NULL,
    text TEXT,
    date INT,
    replace INT DEFAULT 0
);

我得到的错误:

  

#1064 - 您的SQL语法出错;查看与MySQL服务器版本对应的手册,以便在第5行“替换INT DEFAULT 0”附近使用正确的语法

CREATE TABLE message(
    id INT UNIQUE AUTO_INCREMENT NOT NULL ,
    TEXT TEXT,
    DATE INT,
    REPLACE INT DEFAULT 0
);

2 个答案:

答案 0 :(得分:5)

CREATE TABLE message (
    `id` INT UNIQUE AUTO_INCREMENT NOT NULL,
    `text` TEXT,
    `date` INT,
    `replace` INT DEFAULT 0
);

答案 1 :(得分:1)

一般规则是不要使用这些关键字,为您的字段名称提供与“文本”不同的内容。如果必须,在列名称周围使用`(后退)来告诉SQL它是列名而不是关键字的含义。我建议不要在'select'和'where'中调用你的列')