初学者sql缺少关键字和无效的标识符

时间:2017-11-08 23:34:32

标签: sql keyword identifier

CREATE table Book
(
book_title varchar (100) not null ,
book_genre char(60) not null,
Date_of_publish date not null,
user_code char(7) not null ,
book_id char (7) primary key not null , 
constraint writer__id_fk foreign key (writer_id),
constraint publisher__id_fk foreign key (publisher_id)

);

我正在

  

[ORA-00905:缺少关键字]

发布商表格中的

CREATE table publisher

(
publisher_id char (7) primary key not null,
publisher_name char(20) not null,
publisher_number char(10) not null,
publisher_email varchar2(60) not null,
publisher_address varchar2(60) not null,
);

我正在

  

[ORA-00904 ::无效标识符]

4 个答案:

答案 0 :(得分:2)

以下SQL在" PersonID"上创建一个FOREIGN KEY。列时"订单"表已创建:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
    );

有关详细信息,请参阅此链接

https://www.w3schools.com/sql/sql_foreignkey.asp

希望这有帮助。

答案 1 :(得分:0)

对于您的第一个表,外键不引用任何表。对于你的第二张桌子,我想你在上一篇专栏之后的逗号是没有帮助的。

答案 2 :(得分:0)

欢迎来到SQL的精彩世界! : - )

一般评论: 请告诉我们您使用的是哪种DBMS。 MySQL的? SQL Server?甲骨文? SQlite的?不同的系统使用不同类型的语法。

第一声明:

问题似乎出现在CONSTRAINT [constraint_name] FOREIGN KEY([column_in_this_table]) REFERENCES OTHER_TABLE([column_in_other_table])部分。 通常,您会说出类似的内容:

[column_in_this_table]

编辑(已添加):

CREATE TABLE必须存在于您的DDL(CREATE TABLE Book ( book_title ... etc., publisher_id INT, CONSTRAINT FK_publ_id FOREIGN KEY(publisher_id) REFERENCES publisher(publisher_id)); - 语句)中,如下所示: FOREIGN KEY

在这里,您将在“发布商”表格中找到一个名为“publisher_id”的“原始”列。你可以在'Book'表中引用它,首先在'Book'-table 中有一个'publisher_id'列(顺便说一下,它应该与原始列有相同的DDL) 。接下来,您将向“Book”表添加NOT NULL,该表格强加在Book(publisher_id)列上。请注意,您也可以将“书籍”表中的列命名为不同的名称,例如“Spongebob”或“Patrick”。但是为了将来使用,您需要一些命名约定来说明您可能希望在列中找到的内容。所以你要为它们包含的内容命名列。

第二声明:

问题在于您的陈述的最后一部分,其中publisher_address部分publisher_address varchar2(60) not null, );部分后面有逗号

(部分)你的陈述:

publisher_address VARCHAR2(60) NOT NULL);

尝试将其替换为:

VARCHAR2

编辑(注意自己): {{1}}证明是Oracle数据库中的有效数据类型(请参阅:  Oracle documentation

答案 3 :(得分:0)

所以这就是答案。

创建表格书 ( book_title varchar(100)not null, book_genre char(60)not null, Date_of_publish日期不为null, user_code char(7)not null, publisher_id char(7)not null, writer_id char(7)not null, book_id char(7)主键不为null,  CONSTRAINT book_writer_id_fk FOREIGN KEY(writer_id)REFERENCES writer(writer_id),  CONSTRAINT book_publisher_id_fk FOREIGN KEY(publisher_id)REFERENCES publisher(publisher_id) );

创建表格发布者

( publisher_id char(7)主键不为null, publisher_name char(20)not null, publisher_number char(10)not null, publisher_email varchar2(60)not null, publisher_address varchar2(60)not null );