Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初学者sql缺少关键字和无效标识符_Sql_Oracle_Ora 00904 - Fatal编程技术网

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

初学者sql缺少关键字和无效标识符,sql,oracle,ora-00904,Sql,Oracle,Ora 00904,我要走了 [ORA-00905:缺少关键字] 在publisher表中 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 fo

我要走了

[ORA-00905:缺少关键字]

在publisher表中

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-00904::无效标识符]


对于第一个表,外键不引用任何表。对于第二个表,我认为最后一列后面的逗号没有任何帮助。

对于第一个表,外键不引用任何表。对于第二个表,我认为上一列后面的逗号没有任何帮助。

欢迎来到奇妙的SQL世界!:-)

一般备注: 请告诉我们您使用的是哪种DBMS。MySQL?SQL Server?神谕SQlite?不同的系统使用不同种类的语法

第一句话: 问题似乎出在
外键部分。
通常,您会声明如下内容:

CONSTRAINT[CONSTRAINT\u name]外键([column\u in\u this\u table])引用其他表([column\u in\u OTHER\u table])

编辑(添加):


[此表中的列]
必须存在于DDL中(
CREATE table
-语句),如下所示:
CREATE TABLE Book(Book_title…等,publisher_id INT,约束FK_publ_id外键(publisher_id)引用publisher(publisher_id))

在这里,“publisher”表中有一个名为“publisher\u id”的“original”列。您可以从“Book”表中引用它,首先在“Book”表中有一个“publisher_id”列(顺便说一下,它应该与原始列具有相同的DDL)。接下来,您将向“Book”表中添加一个
外键,该表将应用于Book(publisher_id)列。请注意,您也可以在“Book”表中对列进行不同的命名,比如说,“Spongebob”或“Patrick”。但为了将来的使用,您希望使用命名约定来告诉您在列中可能会找到什么。因此,您可以为列命名它们所包含的内容


第二句话: 问题在于语句的最后一部分,在
列的
notnull
部分之后有一个逗号

(部分)你的声明:

publisher_地址varchar2(60)不为空,)

尝试将其替换为:

publisher_地址VARCHAR2(60)不为空)


编辑(自我注释):
VARCHAR2
在Oracle数据库中是有效的数据类型(请参阅:
)

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

一般备注: 请告诉我们您使用的是哪种DBMS。MySQL?SQL Server?神谕SQlite?不同的系统使用不同种类的语法

第一句话: 问题似乎出在
外键部分。
通常,您会声明如下内容:

CONSTRAINT[CONSTRAINT\u name]外键([column\u in\u this\u table])引用其他表([column\u in\u OTHER\u table])

编辑(添加):


[此表中的列]
必须存在于DDL中(
CREATE table
-语句),如下所示:
CREATE TABLE Book(Book_title…等,publisher_id INT,约束FK_publ_id外键(publisher_id)引用publisher(publisher_id))

在这里,“publisher”表中有一个名为“publisher\u id”的“original”列。您可以从“Book”表中引用它,首先在“Book”表中有一个“publisher_id”列(顺便说一下,它应该与原始列具有相同的DDL)。接下来,您将向“Book”表中添加一个
外键,该表将应用于Book(publisher_id)列。请注意,您也可以在“Book”表中对列进行不同的命名,比如说,“Spongebob”或“Patrick”。但为了将来的使用,您希望使用命名约定来告诉您在列中可能会找到什么。因此,您可以为列命名它们所包含的内容


第二句话: 问题在于语句的最后一部分,在
列的
notnull
部分之后有一个逗号

(部分)你的声明:

publisher_地址varchar2(60)不为空,)

尝试将其替换为:

publisher_地址VARCHAR2(60)不为空)


编辑(自我注释):
VARCHAR2
在Oracle数据库中是有效的数据类型(请参阅:
)

创建“订单”表时,以下SQL在“PersonID”列上创建外键:

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,
);
有关更多详细信息,请参阅此链接


希望这能有所帮助。

在创建“Orders”表时,以下SQL在“PersonID”列上创建一个外键:

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,
);
有关更多详细信息,请参阅此链接

希望这有帮助。

这就是答案

创建表格簿 ( 书名varchar(100)不为空, book_流派字符(60)不为空, 发布日期的日期不为空, 用户代码字符(7)不为空, 发布者id字符(7)不为空, writer_id char(7)不为空, book_id char(7)主键不为空, 约束书\u writer\u id\u fk外键(writer\u id)引用writer(writer\u id), 约束书\u publisher\u id\u fk外键(publisher\u id)引用publisher(publisher\u id) );

创建表发布器

( publisher_id char(7)主键不为空, 发布者名称字符(20)不为空, 发布者编号字符(10)不为空, 发布者\u电子邮件varchar2(60)不为空, 发布者地址varchar2(60)不为空 );

这就是答案

创建表格簿 ( 书名varchar(100)不为空, book_流派字符(60)不为空, 发布日期的日期不为空, 用户代码字符(7)不为空, 发布者id字符(7)不为空, writer_id char(7)不为空, book_id char(7)主键不为空, 约束书\u writer\u id\u fk外键(writer\u id)引用writer(writer\u id), 约束书\u publisher\u id\u fk外键(publisher\u id)引用publisher