簡體   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