[英]“table or view does not exist”
我正在尝试创建一些表,但是每次尝试table or view does not exist.
我找不到任何解决方案。 这是我的代码。
CREATE
TABLE "User"
(
anon_id NUMBER (38) NOT NULL PRIMARY KEY,
querytime TIMESTAMP ,
state_symbol VARCHAR2 (5) NOT NULL
) ;
CREATE
TABLE "state"
(
symbol VARCHAR2 (5) NOT NULL PRIMARY KEY,
name VARCHAR2 (30 BYTE) ,
"size" NUMBER (38) ,
population NUMBER (38) ,
tourists NUMBER (38)
) ;
CREATE
TABLE "population_goup"
(
name VARCHAR2 (255) NOT NULL PRIMARY KEY,
COUNT NUMBER (38)
) ;
前3个表是createt,现在他开始“表或视图不存在”,我不知道为什么。
CREATE TABLE "location"
(
zip NUMBER (38) NOT NULL PRIMARY KEY,
city VARCHAR2 (30 BYTE) NOT NULL,
state_symbol VARCHAR2 (30 BYTE) NOT NULL ,
timezone VARCHAR2 (30 BYTE) NOT NULL ,
latitude FLOAT ,
longitude FLOAT ,
population NUMBER (38) NOT NULL ,
FOREIGN KEY (state_symbol) references state(symbol)
) ;
CREATE
TABLE landmark
(
name VARCHAR2 (30 BYTE) NOT NULL PRIMARY KEY,
tourists NUMBER (38) NOT NULL ,
location_zip NUMBER (38) NOT NULL REFERENCES location (zip)
) ;
CREATE
TABLE event
(
name VARCHAR2 (255) NOT NULL ,
from_date TIMESTAMP ,
to_date TIMESTAMP ,
location_zip NUMBER (38) NOT NULL REFERENCES location (zip)
) ;
CREATE
TABLE lives_in
(
population_goup_name VARCHAR2 (255) NOT NULL REFERENCES population_group(NAME),
state_symbol VARCHAR2 (5) NOT NULL REFERENCES state(SYMBOL),
PRIMARY KEY(population_goup_name, state_symbol)
) ;
CREATE
TABLE "searchquery"
(
query VARCHAR2 (4000 CHAR) NOT NULL PRIMARY KEY,
User_id NUMBER (38) NOT NULL REFERENCES User(anon_id),
state_symbol VARCHAR2 (5) REFERENCES state(symbol),
population_name VARCHAR2 (255) REFERENCES population_goup(name),
landmark_name VARCHAR2 (30 BYTE) REFERENCES landmark(name),
event_name VARCHAR2 (255) REFERENCES event(name),
location_zip NUMBER (38) REFERENCES landmark(zip)
) ;
对于searchquery我得到“无效的表名”,但它不是保留字,为什么? 我无法从我的uni脚本中找到任何帮助,因此我感谢能帮助我的每一个人!
state
是一个关键字,因此您将其双引号用作表名。 现在,只要访问该表,就需要带引号的名称:
CREATE TABLE "location"
(
zip NUMBER (38) NOT NULL PRIMARY KEY,
city VARCHAR2 (30 BYTE) NOT NULL,
state_symbol VARCHAR2 (30 BYTE) NOT NULL ,
timezone VARCHAR2 (30 BYTE) NOT NULL ,
latitude FLOAT ,
longitude FLOAT ,
population NUMBER (38) NOT NULL ,
FOREIGN KEY (state_symbol) references "state"(symbol)
) ;
按顺序,每个对象都使用大写名称保存。 除非用双引号引起来 。
删除DDL
所有表名的双引号。 此外,用户,状态均为保留关键字。 您不能将它们用作表名。
"state"
-> state
要么
与以前的DDL中一样,在表中使用双引号引用约束。
references state(symbol)
-> references "state"(symbol)
searchquery
DDL以无效的表名结尾,因为您引用的是用户表,它是一个数据datadictionary
表。 因此,将它们嵌入双引号
例:
CREATE
TABLE "searchquery"
(
query VARCHAR2 (4000 CHAR) NOT NULL PRIMARY KEY,
User_id NUMBER (38) NOT NULL REFERENCES "User"(anon_id),
state_symbol VARCHAR2 (5) REFERENCES "state"(symbol),
population_name VARCHAR2 (255) REFERENCES "population_goup"(name),
landmark_name VARCHAR2 (30 BYTE) REFERENCES "landmark"(name),
event_name VARCHAR2 (255) REFERENCES "event"(name),
location_zip NUMBER (38) REFERENCES "landmark"(zip)
) ;
从DOC。
未引用的标识符不区分大小写。 Oracle将它们解释为大写。 带引号的标识符区分大小写。
通过将名称括在双引号中,可以将以下名称赋予相同名称空间中的不同对象:
雇员
“雇员”
“雇员”注意,Oracle解释以下名称相同,因此它们不能用于同一名称空间中的不同对象:
雇员
雇员
“雇员”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.