Oracle 插入数据 出现ORA-00942表或视图不存在 请求帮忙

Smile_Liber 2011-01-24 10:57:01
我使用了sys用户新建了 test.dbf库文件 和 test用户
并把 connect, resource 两个权限给了 test用户
把test.dbf受于test用户
用test用户登录
新建了一张 userinfo 表 插入数据 提示 ORA-00942:表或视图不存在
但用 select table_name from user_tables; 可以查看到 userinfo 表

哪位高手可以帮忙解决一下小弟的问题

我是刚起飞的菜鸟
...全文
1010 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
南之倩倩 2011-09-15
  • 打赏
  • 举报
回复
我建立表都失败了。参考着文档输入的!,提示“ORA-00942: 列在此处不允许”
CREATE TABLE INFOS
(
STUID VARCHAR2(7) NOT NULL,--学号 学号=‘S’+班号+2位序号
STUNAME VARCHAR2(10) NOT NULL,--姓名
GENDER VARCHAR2(2) NOT NULL,--性别
AGE NUMBER(2) NOT NULL, --年龄
SEAT NUMBER(2) NOT NULL,--座号
ENROLLDATE DATE, --入学时间
STUADDRESS VARCHAR2(50) DEFAULT "地址不详", --住址
CLASSNO VARCHAR2(4) NOT NULL --班号 班号=学期序号+班级序号
)
/
ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID)
/
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER
CHECK(GENDER = '男' OR GENDER ='女')
/
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT
CHECK(SEAT >= 0 AND SEAT <= 50)
/
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_AGE
CHECK(AGE >= 0 AND AGE <= 100)
/
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_CLASSNO
CHECK((CLASSNO >= '1001' AND CLASSNO <= '1999') OR
(CLASSNO >= '2011' AND CLASSNO <= '2999'))
/
ALTER TABLE INFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME)
/
Smile_Liber 2011-01-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lpawuu 的回复:]
引用 2 楼 java3344520 的回复:
select TABLESPACE_NAME from all_tables where table_name
= 'yourtable ' and owner = 'you '
查看表所在空间


执行了这查询语句 没有任何数据 两个用户都试过了test 和 sys
select tablespace_name from all_ta……
[/Quote]

恩 谢谢提示大小写问题

但我还是有个疑问 为什么 用户要大写呢

执行结果如下
SQL> select tablespace_name from all_tables where table_name='userinfo' and owner='TEST';

TABLESPACE_NAME
------------------------------------------------------------
TESTDBA
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lpawuu 的回复:]
引用 2 楼 java3344520 的回复:
select TABLESPACE_NAME from all_tables where table_name
= 'yourtable ' and owner = 'you '
查看表所在空间


执行了这查询语句 没有任何数据 两个用户都试过了test 和 sys
select tablespace_name from all_ta……
[/Quote]
要大写table_name='USERINFO' and owner='TEST';
Smile_Liber 2011-01-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 java3344520 的回复:]
select TABLESPACE_NAME from all_tables where table_name
= 'yourtable ' and owner = 'you '
查看表所在空间
[/Quote]

执行了这查询语句 没有任何数据 两个用户都试过了test 和 sys
select tablespace_name from all_tables where table_name='userinfo' and owner='test';
iqlife 2011-01-24
  • 打赏
  • 举报
回复
select TABLESPACE_NAME from all_tables where table_name
= 'yourtable ' and owner = 'you '
查看表所在空间
cryspigger 2011-01-24
  • 打赏
  • 举报
回复
把插入数据,等权限授权一下试试看。
如果实在不行,就把dba直接授权吧。我以前这么做过的。好用。
Smile_Liber 2011-01-24
  • 打赏
  • 举报
回复
谢谢大家的帮忙
Smile_Liber 2011-01-24
  • 打赏
  • 举报
回复
看来还是不能偷懒啊,我用 Navicat for Oracle 建表 应该是加了双引号了,导致了要加双引号的问题
还有 插入数据的时候 不是用双引号 要用单引号 谢谢上面的仁兄
Smile_Liber 2011-01-24
  • 打赏
  • 举报
回复
/*
Navicat Oracle Data Transfer
Oracle Client Version : 11.2.0.1.0

Source Server : test
Source Server Version : 110200
Source Host : localhost:1521
Source Database :
Source Schema : TEST

Target Server Type : ORACLE
Target Server Version : 110200
File Encoding : 65001

Date: 2011-01-24 13:24:51
*/


-- ----------------------------
-- Table structure for "userinfo"
-- ----------------------------
DROP TABLE "userinfo";

CREATE TABLE "TEST"."userinfo"
( "id" NUMBER(*,0) NOT NULL ENABLE,
"name" VARCHAR2(50) NOT NULL ENABLE,
"sex" VARCHAR2(6),
"age" NUMBER(*,0),
PRIMARY KEY ("id")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "TESTDBA" ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "TESTDBA"
;

-- ----------------------------
-- Records of userinfo
-- ----------------------------
INSERT INTO "userinfo" VALUES ('1', '这些', '男', '12');
INSERT INTO "userinfo" VALUES ('2', 'sd', '女', '45');

-- ----------------------------
-- Checks structure for table "userinfo"
-- ----------------------------
ALTER TABLE "userinfo" ADD CHECK ("id" IS NOT NULL);
ALTER TABLE "userinfo" ADD CHECK ("name" IS NOT NULL);

-- ----------------------------
-- Primary Key structure for table "userinfo"
-- ----------------------------
ALTER TABLE "userinfo" ADD PRIMARY KEY ("id");

我是通过Navicat for Oracle 建的表 我从Navicat 导出的就是上面显示的
coolkisses 2011-01-24
  • 打赏
  • 举报
回复
楼主把建表语句,以及之后的操作贴出来吧,这样好分析啊。
chenleijiangjun 2011-01-24
  • 打赏
  • 举报
回复
6楼说的对,应该是你建表的时候表名加了双引号导致的。
minitoy 2011-01-24
  • 打赏
  • 举报
回复
SQL> create table "t_test" (id number);

Table created

SQL> insert into "t_test" values(1);

1 row inserted

SQL> select * from "t_test";

ID
----------
1

SQL> select * from t_test;

select * from t_test

ORA-00942: 表或视图不存在

SQL>
lxyzxq2008 2011-01-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lpawuu 的回复:]

引用 3 楼 lpawuu 的回复:
引用 2 楼 java3344520 的回复:
select TABLESPACE_NAME from all_tables where table_name
= 'yourtable ' and owner = 'you '
查看表所在空间


执行了这查询语句 没有任何数据 两个用户都试过了test 和 sys
select tables……
[/Quote]oracle默认都是大写,即使你小写创建的,存储到表中也会转变为大写~所以你必须使用大写来查询
Smile_Liber 2011-01-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 minitoy 的回复:]
怀疑是大小写的问题,你建表是不是加了"";
如果加了并且里面含小写字母,那么你只能采用"表名"的方法来引用表,里面的大小写要跟最初建表时候的一致.
[/Quote]

我建表是使用 Navicat for Oracle 建的

你说的 加上双引号 查询没问题 ,但是插入新数据 再加上双引号的话 就提示
ORA-00984:列在此处不允许
minitoy 2011-01-24
  • 打赏
  • 举报
回复
怀疑是大小写的问题,你建表是不是加了"";
如果加了并且里面含小写字母,那么你只能采用"表名"的方法来引用表,里面的大小写要跟最初建表时候的一致.

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧