简体   繁体   English

“表或视图不存在”

[英]“table or view does not exist”

I am trying to create some tables but i get every time i try table or view does not exist. 我正在尝试创建一些表,但是每次尝试table or view does not exist.

I cant find any solution. 我找不到任何解决方案。 Here is my code. 这是我的代码。

 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) 
  ) ;

The first 3 tables are createt and now he starts "table or view does not exist" and i dont know why. 前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)
  ) ;

For searchquery i get "invalid table name" but its not a reserved word so why? 对于searchquery我得到“无效的表名”,但它不是保留字,为什么? I cant find any help from the script of my uni so i thanks to every one that can help me! 我无法从我的uni脚本中找到任何帮助,因此我感谢能帮助我的每一个人!

state is a keyword, so you double quoted it to use it as a table name. state是一个关键字,因此您将其双引号用作表名。 Now you need the quoted name whenever you access that table: 现在,只要访问该表,就需要带引号的名称:

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)
  ) ;

In order, every object is saved with UPPER CASE name. 按顺序,每个对象都使用大写名称保存。 Unless enclosed within double quotes . 除非用双引号引起来

Remove the double quotes to all your table names in the DDL . 删除DDL所有表名的双引号。 Also, User, State all are reserved keywords. 此外,用户,状态均为保留关键字。 You cannot use them as table names. 您不能将它们用作表名。

"state" --> state "state" -> state

OR 要么

Refer your tables in the constraints with double quotes, same as in DDL previously.. 与以前的DDL中一样,在表中使用双引号引用约束。

references state(symbol) --> references "state"(symbol) references state(symbol) -> references "state"(symbol)

searchquery DDL ended with invalid table name because, you refer User table, which is a datadictionary table. searchquery DDL以无效的表名结尾,因为您引用的是用户表,它是一个数据datadictionary表。 So, embed them in double quotes 因此,将它们嵌入双引号

Example: 例:

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)
  ) ;

From DOCs. 从DOC。

Nonquoted identifiers are not case sensitive. 未引用的标识符不区分大小写。 Oracle interprets them as uppercase. Oracle将它们解释为大写。 Quoted identifiers are case sensitive. 带引号的标识符区分大小写。

By enclosing names in double quotation marks, you can give the following names to different objects in the same namespace: 通过将名称括在双引号中,可以将以下名称赋予相同名称空间中的不同对象:

employees 雇员
"employees" “雇员”
"Employees" “雇员”

Note that Oracle interprets the following names the same, so they cannot be used for different objects in the same namespace: 注意,Oracle解释以下名称相同,因此它们不能用于同一名称空间中的不同对象:

employees 雇员
EMPLOYEES 雇员
"EMPLOYEES" “雇员”

More on the Schema Object Names and Qualifiers 有关架构对象名称和限定符的更多信息

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM