“表或视图不存在" [英] "table or view does not exist"

查看:107
本文介绍了“表或视图不存在"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一些表,但是每次尝试

I am trying to create some tables but i get every time i try 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) 
  ) ;

创建了前3个表,现在他开始表或视图不存在",我不知道为什么.

The first 3 tables are createt and now he starts "table or view does not exist" and i dont know why.

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脚本中找到任何帮助,因此我感谢能帮助我的每一个人!

For searchquery i get "invalid table name" but its not a reserved word so why? I cant find any help from the script of my uni so i thanks to every one that can help me!

推荐答案

依次,每个对象都使用大写名称保存.除非包含在双引号中.

In order, every object is saved with UPPER CASE name. Unless enclosed within double quotes.

DDL中删除所有表名的双引号.此外,用户",状态"均为保留关键字.您不能将它们用作表名.

Remove the double quotes to all your table names in the DDL. Also, User, State all are reserved keywords. You cannot use them as table names.

"state"-> state

OR

使用双引号引用约束中的表,与之前的DDL中相同.

Refer your tables in the constraints with double quotes, same as in DDL previously..

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

searchquery DDL以无效的表名结尾,因为您引用了 用户表,它是一个datadictionary表.因此,将它们嵌入 双引号

searchquery DDL ended with invalid table name because, you refer User table, which is a datadictionary table. So, embed them in double quotes

示例:

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对其进行解释 大写.带引号的标识符区分大小写.

Nonquoted identifiers are not case sensitive. Oracle interprets them as uppercase. 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"

请注意,Oracle对以下名称的解释相同,因此它们 不能用于同一命名空间中的不同对象:

Note that Oracle interprets the following names the same, so they cannot be used for different objects in the same namespace:

员工
雇员
雇员"

employees
EMPLOYEES
"EMPLOYEES"

有关模式对象名称和限定符的更多信息

这篇关于“表或视图不存在"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆