我正在使用 Odbc 连接到 MySQL 服务器,想知道如何检查我的数据库中是否存在一个表,如果不存在,则创建它。
使用 CREATE TABLE IF NOT EXISTS
。
值得一提的是,并非所有RDBMS都支持 CREATE ... IF NOT EXISTS
。MySQL 支持,但对于那些寻求更具可移植性解决方案的人来说,知道你有多种(效率较低但功能相同)实现相同目的的方法:
CREATE TABLE
语句;如果表已经存在,则该语句将失败,在这种情况下,只需忽略错误并继续执行。information_schema
的 tables
对象中选择 SELECT
,以查看给定的表是否已经存在(最初由 @Derek
建议 -- 请参见 @lexu
's answer 获取实际查询); 根据结果,要么发出 CREATE TABLE
-- 要么不发出(在访问 information_schema.tables
时要注意诸如表名大小写敏感性、您的表可能出现在多个模式中等问题)。创建表如果不存在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中,你可能会想要省略最后的“group by”语句。我通常会坚持保留它,这样在使用其他DBMS时就不会遇到不愉快的情况。但是,在这种情况下,完全是MySQL特有的,有点微妙。
我不知道这个mysql的语法,但是我曾经使用过的所有数据库都提供了一组包含有关数据的元数据的表。即系统表。您可以仅使用where子句中的表名在正确的系统表上执行select count以查找它是否存在。可能还有其他方法。
我建议查看mysql文档以获取有关系统表及其访问方式的信息。由于是mysql,所以可能非常简单。