查询以提取所有表名和列名

时间:2010-08-11 18:02:02

标签: sql oracle

我需要一个查询(ORACLE)来获取给定值的数据库中的所有表名和列名吗?

示例:如果我将值设为“TEST”,我需要一个查询,它会拉出所有TABLE_NAMES和COLUMN_NAMES,其值为“TEST”。

5 个答案:

答案 0 :(得分:1)

select table_name, null column_name from all_tables where table_name like '%TEST%'
union all
select null, column_name from all_tab_columns where column_name like '%TEST%';

答案 1 :(得分:1)

另一种方法是在诸如

的过程中使用绑定变量

DEFINE vSearch ='%TEST%'

ACCEPT vSearch char PROMPT'输入搜索值:'

SELECT * 来自USER_TAB_COLS WHERE column_name LIKE'&& vSearch' OR table_name LIKE'&& vSearch';

答案 2 :(得分:1)

查看特定表用户的所有列使用“ALL_TAB_COLUMNS”

如果您想描述特定的表用户,请使用“DESC Table_name;”

请试试这个..

答案 3 :(得分:0)

您可以使用USER_TAB_COLUMNS表

答案 4 :(得分:0)

这应该可以获得列和表以及视图:

SELECT 'Column: '||owner||'.'||table_name||'.'||column_name 
  FROM dba_tab_columns 
 WHERE column_name = 'TEST'
UNION ALL 
SELECT 'Table: '||owner||'.'||table_name 
  FROM dba_tables 
 WHERE table_name = 'TEST'
UNION ALL 
SELECT 'View: '||owner||'.'||view_name
  FROM dba_views
 WHERE view_name = 'TEST';

请注意,如果您无权访问DBA_视图,也可以使用ALL_ *字典视图,但只能看到有权访问的对象。