在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='' 查询含有这字段的所有表的全部数据,用下面语句就可以查出全部含有这个字段表的字段数据declarev_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中创建的表空间超出了db_fills的最大值?怎么回事?
在PL/SQL中如何用SQL语句查询数据库中所有表的数据数量?
怎么解决这个问题?是啥问题 sql语句在PL/SQL里运行没问题啊