在RDBMS数据库中检查表是否存在

时间:2016-03-01 13:19:21

标签: sql-server oracle db2 teradata rdbms

如何以通用方式检查Oracle,Teradata,SQL Server,DB2等数据库中是否存在表。

选项1:

Select 1 from Table;

选项2:

Describe Table;

哪一个更好还是还有其他更好的方式?

修改:所有这些数据库都不支持select 1 from Table&检查存在的通用方法?

4 个答案:

答案 0 :(得分:4)

简单回答:是一种完成您要求的方式。不同的RDBMS以不同的方式表示模式,表,权限和数据字典。

更大的答案:提出问题的实体需要知道它所查询的RDBMS。然后可以为所讨论的数据库系统形成表存在问题。即使有这些信息,@ dat_hinrik也是正确的,权限可能会阻止您查看现有表。

答案 1 :(得分:0)

这适用于SQL Server& MySQL的

select *
from    INFORMATION_SCHEMA.TABLES
where   TABLE_NAME =  'Table'

不支持:Oracle

答案 2 :(得分:0)

使用JDBC的通用方式:

Connection conn;
<...connect here...>

try {
  conn.createStatement().executeQuery("select * from " + table_name + " where 1=0");
} catch (Exeception e) {
    System.out.println("ERROR: " + e.toString());
} 

答案 3 :(得分:-1)

在Oracle中,有user_tables视图来检查用户模式中存在的所有表。存在于用户模式中的表的all_tables视图加上当前用户对其他模式的表具有选择权限的表。 dba_tables包含数据库中的所有表。

xxxx