【问题标题】:SQL syntax error in creating table创建表时的 SQL 语法错误
【发布时间】:2018-05-07 23:45:50
【问题描述】:
/*Create the Registered guest table*/
create table Registered guest 
(
    Guest_ID integer not null,
    F_Name varchar (50) not null,
    L_Name varchar (50) not null,
    Start_date date not null CHECK (Start_date <=End_date),
    End_date date not null, 
    Dietary_needs varchar(20),
    Acco_needs varchar (50),
    Number_ of_ accompanying guests integer(5),

    Primary key (Guest_ID)
); 

我收到以下错误

“客人”附近:语法错误:创建表注册客人

我找不到语法错误!

【问题讨论】:

  • 你能选择一种 SQL 风格,而不是 3 种吗?
  • 请不要标记垃圾邮件。 SQL Server 不是 MySQL 也不是 SQLite。您需要做的第一件事是弄清楚您实际使用的是哪个 DBMS。接下来是停止使用与该 DBMS 无关的标签。致电汽车维修店并询问 我的车有问题,您不会得到帮助。这是福特、雪佛兰、道奇或保时捷。更换起动机多少钱?
  • 删除了所有冲突/不相关的标签并添加了通用 sql 之一。请添加您使用的一个产品标签。
  • 数据库是什么?
  • 需要分隔包含“奇数”字符(如空格等)的标识符,例如"Number_ of_ accompanying guests".

标签: sql


【解决方案1】:

表名中的空格有问题。最好避免空格,直接调用表格Registered_guest

如果您确实需要名称中的空格,请使用双引号,如

 create table "Registered guest" (

【讨论】:

  • 根据stackoverflow.com/questions/25141090/… SQLite 接受反引号和方括号,以便与 MySQL 和 SQL-Server 兼容。您还可以使用双引号,这是 SQL 标准。
  • @Barmar 谢谢,我不知道双引号。
【解决方案2】:
...
Number_ of_ accompanying guests integer(5),
...

'accompanying' 和 'guests' 之间缺少下划线

【讨论】:

  • 谢谢!使用下划线作为表名有帮助。感谢 Ryne 缺少下划线
【解决方案3】:

除了表名和列名中的空格问题外,CHECK 约束之前缺少逗号。正确的查询应该是:-

create table Registered_guest (
    Guest_ID integer not null,
    F_Name varchar (50) not null,
    L_Name varchar (50) not null,
    Start_date date not null,
    End_date date not null, 
    Dietary_needs varchar(20),
    Acco_needs varchar (50),
    Number_of_accompanying_guests integer,
    Primary key (Guest_ID),
    CHECK (Start_date <=End_date)
); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 2014-03-13
    • 2012-08-14
    相关资源
    最近更新 更多