在pl/sql中怎么查询所有存在的表,以及怎么样获得未知表中的某一字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在pl/sql中怎么查询所有存在的表,以及怎么样获得未知表中的某一字段相关的知识,希望对你有一定的参考价值。

在pl/sql中怎么查询所有存在的表,以及怎么样获得未知表中的某一字段这一字段已经知道,就是想知道这个字段所对应的数据,但是不知道哪些表里有这些字段?

如果查询所有表用这个语句就可以select table_name from user_all_tables ; 如果是查询未知表中的某一字段,查询含有这字段的所有表 select table_name from user_tab_columns where column_name='' 查询含有这字段的所有表的全部数据,用下面语句就可以查出全部含有这个字段表的字段数据declare
v_table_name varchar2(30);
v_column_name varchar2(30);
v_column_data varchar2(4000);
cursor cur_sel_table is select table_name,column_name from user_tab_columns where column_name='';
type cursor_type is ref cursor;
cur cursor_type;
begin
open cur_sel_table;
loop
fetch cur_sel_table Into v_table_name,v_column_name;
exit when cur_sel_table%notfound;
open cur for 'select '||v_column_name||' from '||v_table_name ;
loop
fetch cur into v_column_data;
exit when cur%notfound;
dbms_output.put_line(v_column_data);
end loop;
close cur;
end loop;
close cur_sel_table;
end;
参考技术A 如果你是管理员帐户,那么可以列出当前DB中所有表:
select TABLE_NAME from all_tables;
列出某个字段所属的表;
SELECT table_name from all_tab_columns where column_name='要查的字段'; 如果你是普通用户,那么只能可以列出当前用户所有表:select TABLE_NAME from user_all_tables;
列出某个字段所属的表;
SELECT table_name from user_tab_columns where column_name='要查的字段';
参考技术B 列出当前DB中所有表:
select table_name from user_all_tables
列出表中所有字段:
SELECT column_name from user_tab_columns where table_name='EDL_TM_User')
参考技术C Dr.Zhan 的回答是正解!

oracle中怎么用sql查表以及表的字段名

1、用sql查表
查表的时候需要用到user_tables、all_tables,user_tables查出来的是该用户拥有的表,all_tables查出来的是所有用户的表。
2、用sql查表的字段
查表的字段需要用到user_tab_columns、all_tab_columns,一样的前者只能查到该用户拥有的表,后者可以查询所有用户的表。
3、其他
与上面类似的还有查询对象(user_objects、all_objects)、索引(user_indexes、all_indexes)、约束(user_constraints、all_constraints)等。
至于到底怎么查,先用select * from XXX查看表的信息,然后看下就知道了。比如查一个system表dba_data_files的字段,可以用select * from all_tab_columns where table_name = \'DBA_DATA_FILES\',注意表名大写。
2014-11-04补充:
下列列出一些比较重要的数据字典:

DBA_TABLES:描述数据库中所有相关的表。

DBA_ALL_TABLES:描述数据库中所有的对象以及相关的表。

USER_TABLES:描述数据库中当前用户拥有的相关的表。

USER_ALL_TABLES:描述数据库中当前用户拥有的对象以及相关的表。
ALL_TABLES:描述数据库中所有的用户可以访问的相关的表。

ALL_ALL_TABLES:描述数据库中所有的用户可以访问的对象以及相关的表。

DBA_TAB_COLUMNS:描述数据库中所有表的列属性。
USER_TAB_COLUMNS:描述数据库中当前用户拥有的表的列属性。

ALL_TAB_COLUMNS:描述数据库中所有用户可以访问的表的列属性。
DBA_CONSTRAINTS:描述数据库中所有表的约束和属性。
DBA_CONS_COLUMNS:包含在DBA_CONSTRAINTS约束定义中的可访问的列的信息。

ALL_CONSTRAINTS:描述数据库中所有用户可以访问的表的约束和属性。

ALL_CONS_COLUMNS:包含在ALL_CONSTRAINTS约束定义的可访问的列的信息。

USER_CONSTRAINTS:描述数据库中所有当前用户拥有的表的约束的属性。

USER_CONS_COLUMNS:包含在USER_CONSTRAINTS约束定义的可访问的列的信息。

DBA_SEQUENCES:数据库中所有序列的描述。

ALL_SEQUENCES:描述数据库中所有用户可以访问的序列的描述。

USER_SEQUENCES:描述数据库中所有当前用户拥有的序列的描述。

DBA_INDEXES:描述数据库中所有的索引的属性。

ALL_INDEXES:描述数据库中所有用户可以访问的索引的属性。

USER_INDEXES:描述数据库中所有当前用户拥有的索引的属性。
参考技术A SELECT * FROM DBA_TAB_COLUMNS WHERE TABLE_NAME = 'STUDENT'

以上是关于在pl/sql中怎么查询所有存在的表,以及怎么样获得未知表中的某一字段的主要内容,如果未能解决你的问题,请参考以下文章

在PL/SQL中怎样判断查询的结果是不是为空

在pl/sql中创建的表空间超出了db_fills的最大值?怎么回事?

在PL/SQL中如何用SQL语句查询数据库中所有表的数据数量?

怎么解决这个问题?是啥问题 sql语句在PL/SQL里运行没问题啊

PL/sql下,如果想比较N个数的大小,每两个数比较后取最大值,然后和下一个数比较,请问怎么写

PL/SQL的基本语法