检查表是否存在,如果不存在,则创建表

时间:2010-04-14 04:15:51

标签: c# mysql odbc

我正在使用与MySQL服务器的Odbc连接,并想知道如何检查我的数据库中是否存在表,如果不存在,则创建它。

3 个答案:

答案 0 :(得分:8)

使用CREATE TABLE IF NOT EXISTS

更新

对于记录,并非所有RDBMS都支持CREATE ... IF NOT EXISTS。 MySQL 确实,但对于那些寻求更便携解决方案的人来说,要知道你有多种(效率较低但功能正常)的方法来实现同样的目标:

  • 无条件发出CREATE TABLE;如果表已经存在,则该语句将失败,在这种情况下,只需吞下错误并继续
  • 来自ANSI information_schema中的SELECT对象的
  • tables,以查看某个表是否已存在(最初由@Derek建议 - 请参阅@lexu's answer用于实际查询);根据结果​​,问题CREATE TABLE - 或者不是(当访问information_schema.tables时要注意表名称区分大小写等问题,表格出现在多个模式中的可能性等等。)

答案 1 :(得分:3)

除了Vlad Romanscanu在一个甜蜜的直接陈述中对create table if not exists NEW_TABLE_NAME的处理方式外,总有选择查询INFORMATION_SCHEMA。 (我认为这就是Derek CLarkson所建议的)。

这种方法确实需要更多的客户端编码......

您可以使用此查询:

select count(TABLE_NAME)
  from INFORMATION_SCHEMA 
 where TABLE_SCHEMA = 'your schema'
   and TABLE_NAME = 'your table'
group by TABLE_NAME
在Mysql中

注意你可能会想要忽略最后的“分组”,我倾向于对它进行一点点关注并留下它,所以我没有不愉快在处理另一个DBMS时遇到。
这个案例,完全是MySQL特有的,是边缘的!

答案 2 :(得分:1)

我不知道mysql的语法,但是我用过的所有数据库都提供了一组包含有关数据的元数据的表。即系统表。您可以使用where子句中的表名简单地对正确的系统表执行选择计数,以确定它是否存在。也可能有其他方式。

我建议在mysql上查看doco,了解系统表的信息以及如何访问它们。作为mysql,它可能很简单。