繁体   English   中英

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

[英]Check if a table exists, and if not, create it

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

使用CREATE TABLE IF NOT EXISTS

UPDATE

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

  • 无条件地发出CREATE TABLE ; 如果表已经存在,语句将失败,在这种情况下,只需吞下错误并继续
  • 从ANSI information_schematables对象中进行SELECT ,以查看给定的表是否已经存在(正如@Derek最初建议的@Derek - 请参阅@lexu对实际查询的回答 ); 取决于结果,要么发出CREATE TABLE - 要么不要(当访问information_schema.tables要注意表名称区分大小写等问题,表格出现在多个模式中的可能性等)

除了Vlad Romanscanu create table if not exists NEW_TABLE_NAME的方法( 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特有的,是边缘的!

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM