如何使用 SQL 来查看表是不是存在? [复制]
Posted
技术标签:
【中文标题】如何使用 SQL 来查看表是不是存在? [复制]【英文标题】:How do you use SQL to see whether a table exists or not? [duplicate]如何使用 SQL 来查看表是否存在? [复制] 【发布时间】:2012-04-30 14:13:51 【问题描述】:可能重复:SQL Server: Check if table existsOracle: If Table Exists
我正在尝试创建一个表并插入一些值,但在此之前我必须确保该表不存在。你如何检查这个?
【问题讨论】:
哪种语言,如mysql,如果存在就可以使用 我目前正在使用 Oracle。似乎所有的答案都假设我使用的是 SQL Server,因为我忘了在那里提及它...... 为什么要这样做?使用 Oracle,很少需要动态创建表(与某些其他风格的 DBMS 不同)。 【参考方案1】:您可以尝试简单地从中选择并捕获错误,否则您将需要编写特定于数据库的 SQL 来查询它们各自的元数据表并查看那里。
【讨论】:
【参考方案2】:如果是 MySQL:
select count(*) from my_tables where table_name='table_1';
If count>0 then ...
【讨论】:
【参考方案3】:假设 SQL Server...查询系统对象:
select * from sysobjects where xtype='U' and name ='tablename'
【讨论】:
或者对于 SQL Server 2005 和更新的 - 甚至更好 - 查询sys.tables
: if exists (select * from sys.tables where Name = 'tablename') .....
【参考方案4】:
在 MySQL 中,您可以使用 CREATE TABLE IF NOT EXISTS 构造并在 INSERT 查询之前运行它。如果表不存在,这将创建表,如果表存在,则不执行任何操作。
CREATE TABLE IF NOT EXISTS myTable (
....
)
http://dev.mysql.com/doc/refman/5.1/en/create-table.html
http://docs.oracle.com/cd/E17952_01/refman-5.1-en/create-table.html
【讨论】:
你知道Oracle而不是SQL Server是什么样的吗? 这对oracle来说似乎是一样的,但我不是100%。查看他们的文档,这看起来是一样的: docs.oracle.com/cd/E17952_01/refman-5.1-en/create-table.html 该文档适用于 MySQL,请参阅 docs.oracle.com/cd/E17952_01/refman-5.1-en【参考方案5】:这个简单的查询为您提供有关由用户在 oracle 中创建的特定表的详细信息。试试看。
select * from user_tables where table_name = 'tablename';
【讨论】:
不要忘记表名默认是大写的。 这里的 tablenane 是表的通用名称。 tablename 不是特定的表。 我明白这一点,但 OP 可能没有意识到这一点。以上是关于如何使用 SQL 来查看表是不是存在? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在SQL Server2005数据库中检查一个表是不是存在,如存在就删除表记录,如不存在就建表.
如何检查 SQL Server CE 3.5 中是不是存在表