如何使用SQL查看表是否存在?

如何使用SQL查看表是否存在?,sql,oracle,create-table,Sql,Oracle,Create Table,可能重复: 我试图创建一个表并插入一些值,但在创建之前,我必须确保该表不存在。如何检查此问题?您可以尝试简单地从中选择并捕获错误,否则您将需要编写特定于数据库的SQL来查询各自的元数据表并查看这些表。如果MySQL: select count(*) from my_tables where table_name='table_1'; If count>0 then ... 假设SQL Server…查询系统对象: select * from sysobjects where xty

可能重复:


我试图创建一个表并插入一些值,但在创建之前,我必须确保该表不存在。如何检查此问题?

您可以尝试简单地从中选择并捕获错误,否则您将需要编写特定于数据库的SQL来查询各自的元数据表并查看这些表。

如果MySQL:

select count(*) from my_tables where table_name='table_1'; 
If count>0 then  ...

假设SQL Server…查询系统对象:

select * from sysobjects where xtype='U' and name ='tablename'

在MySQL中,可以使用CREATETABLE IF EXISTS构造并在INSERT查询之前运行它。如果该表不存在,则会创建该表;如果该表存在,则不会执行任何操作

CREATE TABLE IF NOT EXISTS myTable (
    ....
)

这个简单的查询为您提供了有关用户在oracle中创建的特定表的详细信息。试试看

 select * from user_tables where table_name = 'tablename';

如果Existi目前正在使用Oracle,您可以使用哪种语言,如mysql。似乎所有的答案都假设我在使用SQL Server,因为我忘了在这里提到它……为什么要这样做?与某些其他类型的DBMS不同,Oracle很少需要动态创建表。或者对于SQL Server 2005和更高版本-甚至更好-查询sys.tables:if exists select*from sys.tables where Name='tablename'…您知道Oracle而不是SQL Server的情况吗?这对于Oracle来说似乎是一样的,但我不是100%。查看他们的文档,这看起来是一样的:文档是针对MySQL的,请参见不要忘记默认情况下表名是大写的。tablename不是一个特定的表。我理解这一点,但OP可能不知道这一点。