使用SQL查询来确定表是否存在

时间:2010-12-08 08:10:16

标签: sql oracle

有没有其他方法可以确定除下面的

以外的表格
  1. select count(*) from <table> where rownum =1
  2. select * from user_table where table_name=<table>
  3. 请告诉我使用oracle sql检查表是否存在的最佳方法。

    感谢您的回答,我的要求是从当月的第一个日期(即2010年12月1日)检查数据库中是否存在suresh_20101201格式的表格名称,如果没有则应检查表格suresh_20101202及其上直到suresh_20101231。是否可以在oracle sql查询中执行。

6 个答案:

答案 0 :(得分:26)

你可以这样做(在oracle中,在mssql中有一点不同):

select count(*)
from all_objects
where object_type in ('TABLE','VIEW')
and object_name = 'your_table_name';

答案 1 :(得分:1)

在大多数sql服务器中都有一个系统域,您可以在其中查询表的存在。虽然它具有高度实现性。例如,在MySql的最新版本中:

SELECT table_name FROM INFORMATION_SCHEMA.TABLES
  WHERE table_schema = 'db_name'
  AND table_name LIKE 'whatever'

答案 2 :(得分:1)

您需要询问服务器的系统目录。不确定你的意思是什么数据库,但对于SQL Server,它将是:

select * from sys.tables where name='your-table-name-'

答案 3 :(得分:1)

在Oracle SQL Developer中使用它:

SELECT COUNT(*) FROM DUAL WHERE EXISTS (
    SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE' AND OWNER = 'myschema' AND OBJECT_NAME = 'your_table_name')

如果您的表存在或不存在于0记录中,则会返回1ALL_OBJECTS

答案 4 :(得分:1)

可以向Oracle触发以下查询,以检查数据库中是否存在任何表:

SELECT count(*) count FROM dba_tables where table_name = 'TABLE_NAME'

如果数据库中存在表“ TABLE_NAME”,则上述查询将返回计数1。

答案 5 :(得分:0)

查看架构,可能事件能够使用sys.objects并同时检查类型.....

这样的东西