如何查看oracle数据库中的所有表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查看oracle数据库中的所有表相关的知识,希望对你有一定的参考价值。

觉得你应该先弄清楚oracle的常规数据字典的结构,像9i里的常规数据字典中对象名称就有以USER,ALL,DBA为前缀的对象。
以USER为例,我们查该对象下有些什么表,就应该执行下列的语句:
SQL>select table_name from user_tables;
类似的,你可以进行替换。:)

如果你想查数据库中所有的表的话,可以查询
SELECT * FROM dba_tables

如果你想查询数据库中某个用户下的表的话,也可以登录这个用户,再查询:
SELECT * FROM USER_TABLES

要想导入外部sql语句可以用命令
sql >@e:\\文件名.sql

如你想保存 select * from tablename;语句的结果,可以在sql*plus 里面这样:

SPOOL c:\\test.sql //这是保存文件的位置
select * from tablename;
SPOOL OFF
参考技术A

1、如果你想查数据库中所有的表的话,可以查询
SELECT * FROM dba_tables

2、如果你想查询数据库中某个用户下的表的话,也可以登录这个用户,再查询:
SELECT * FROM USER_TABLES

3、要想导入外部sql语句可以用命令

sql >@e:文件名.sql

如你想保存 select * from tablename;语句的结果,可以在sql*plus 里面这样:

SPOOL c:test.sql             //

这是保存文件的位置

select * from tablename;

SPOOL OFF

参考技术B [TEST1@kokooa]>show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
ANNOUNCE BIN$Tjsm4dKqTnSo+Zynff5Pkg==$0 TABLE 2009-12-11:09:38:37
C BIN$/twfj/wKSX+xdc0kDtX6RQ==$0 TABLE 2009-11-16:14:44:12
C BIN$JBv3O0jyS5GEj3m+IrypVQ==$0 TABLE 2009-11-12:11:13:20
C BIN$K7Vs3JRYS3Wwhut51gRl7w==$0 TABLE 2009-11-11:11:07:43
D BIN$TC+wEm2pRR2thSXmqoLf/A==$0 TABLE 2009-11-12:11:10:27
T1 BIN$BnbNfsThTe2SLcFBSc71xA==$0 TABLE 2009-12-07:16:35:13
T1 BIN$8TMSXhUCR7Cr+bFDOe4EBA==$0 TABLE 2009-12-07:10:00:01

我们来看看两个结果到底是什么差别

[TEST1@kokooa]>select object_name from all_objects where object_type='TABLE' minus select table_name from all_tables;

OBJECT_NAME
------------------------------
XDB$ACL
XDB$ALL_MODEL
XDB$ANY
XDB$ANYATTR
XDB$ATTRGROUP_DEF
XDB$ATTRGROUP_REF
XDB$ATTRIBUTE
XDB$CHOICE_MODEL
XDB$COMPLEX_TYPE
XDB$CONFIG
XDB$ELEMENT

OBJECT_NAME
------------------------------
XDB$GROUP_DEF
XDB$GROUP_REF
XDB$SCHEMA
XDB$SEQUENCE_MODEL
XDB$SIMPLE_TYPE

16 rows selected.

总共多出16个表。而且这16个表并不是删除后放进回收站的表

我们分析这些“表”
[TEST1@kokooa]>desc XDB$ACL;
ERROR:
ORA-04043: object XDB$ACL does not exist
发现并不存在

[TEST1@kokooa]>conn / as sysdba
Connected.
[SYS@kokooa]>desc XDB$ACL;
ERROR:
ORA-04043: object XDB$ACL does not exist
换到sysdba也不存在

前缀都是XDB$,你网上搜索,与XML有关。而且注意看后缀,都是一些数据库的关键字。

XML Database 好像是这个意思 安装的时候有个选项可以将它去掉

我所在公司的系统有个导入导出数据的功能,用的是XML。或许就跟这个有关。

oracle很多东西我们都用不上 但是安装的时候没有去掉,具体是怎么回事我也不是很清楚。只知道这是另外一个分支 仔细研究起来的话 也是会很麻烦的
参考技术C SQL> Select object_name from all_objects where object_name not in(select table_name from all_tables)
and object_type='TABLE';

OBJECT_NAME
------------------------------------------------------------
BIN$+7S3khPUTSKjreZoB9gknA==$0
BIN$RIQnjSwzSEKk/t2um6mDkg==$0
发现了吗,这2个是已经DROP了的表,放在recyclebin中,原来叫EMP
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE
---------------- ------------------------------ ------------
EMP BIN$+7S3khPUTSKjreZoB9gknA==$0 TABLE
EMP BIN$RIQnjSwzSEKk/t2um6mDkg==$0 TABLE

经实验,表明ALL_TABLES中不含被删除但还没清空的表,而ALL_OBJECTS中则包含所有。
我也是看到你的提问才发现的:)
参考技术D select * from all_tables
all_tables是所有能访问,包括其它用户的,如果要查看当前用户用user_tables

如何查看数据库中的表?

参考技术A 怎样用SQL语句查询一个数据库中的所有表?
--读取库中的所有表名select name from sysobjects where xtype='u'--读取指定表的所有列名select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')获取数据库表名和字段sqlserver中各个系统表的作用sysaltfiles 主数据库 保存数据库的文件syscharsets 主数据库 字符集与排序顺序sysconfigures 主数据库 配置选项syscurconfigs 主数据库 当前配置选项sysdatabases 主数据库 服务器中的数据库syslanguages 主数据库 语言syslogins 主数据库 登陆帐号信息sysoledbusers 主数据库 链接服务器登陆信息sysprocesses 主数据库 进程sysremotelogins主数据库 远程登录帐号syscolumns 每个数据库 列sysconstrains 每个数据库 限制sysfilegroups 每个数据库 文件组sysfiles 每个数据库 文件sysforeignkeys 每个数据库 外部关键字sysindexs 每个数据库 索引sy *** enbers 每个数据库 角色成员sysobjects 每个数据库 所有数据库对象syspermissions 每个数据库 权限systypes 每个数据库 用户定义数据类型select 列名=name from syscolumns where id=object_id(N'要查的表名')
如何查看oracle数据库中的所有表
觉得你应该先弄清楚oracle的常规数据字典的结构,像9i里的常规数据字典中对象名称就有以USER,ALL,DBA为前缀的对象。

以USER为例,我们查该对象下有些什么表,就应该执行下列的语句:

SQL>select table_name from user_tables;

类似的,你可以进行替换。:)

如果你想查数据库中所有的表的话,可以查询

SELECT * FROM dba_tables

如果你想查询数据库中某个用户下的表的话,也可以登录这个用户,再查询:

SELECT * FROM USER_TABLES

要想导入外部sql语句可以用命令

sql >@e:\文件名.sql

如你想保存 select * from tablename;语句的结果,可以在sql*plus 里面这样:

SPOOL c:\test.sql 这是保存文件的位置

select * from tablename;

SPOOL OFF
mysql如何进入数据库查看所有表
mysql> use my_db;

mysql> select * from rmation_schema.tables t where t.table_schema='my_db';

--大概

Mysql> create table lala (la_id int ,la_name varchar(55) primary(id)) enginee=innodb
怎样看SQL数据库中哪些表有数据
什么数据库

1.

select * from rmation_schema.tables

2.

select table_name from user_all_tables

-------------------------

CREATE PROCEDURE get_table AS

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespace]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

create table tablespace --创建结果存储表

(name varchar(50) ,

rows int , reserved varchar(20) ,

data varchar(20) ,

index_size varchar(20) ,

unused varchar(20) )

truncate table tablespace --清空数据表

--这里.....关键部分.把存储过程的结果放到一个表里.

insert into tablespace exec sp_MSforeachtable "exec sp_spaceused '?'"

go

查询运行该存储过程后得到的结果

select * from tablespace order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc

以上是关于如何查看oracle数据库中的所有表的主要内容,如果未能解决你的问题,请参考以下文章

在oracle中如何查询一张表的所有数据结构,包括字段,视图,索引,约束

如何查询一个oracle数据库中所有表的所有字段哪个包含特定字符串?

如何计算表中所有 Oracle 可变数组中的元素数?

如何查询oracle中的所有表和视图

如何查询oracle数据库中指定数据库实例中的所有表?

oracle 如何根据一个表中记录的变动更新另外一个表中相应的字段