MySQLでは、IF NOT EXISTSを使用できます CREATE TABLEの句 同じ名前のテーブルがデータベースにすでに存在するかどうかを確認するステートメント。
テーブルが存在しない場合は作成されます。すでに存在する場合、作成されません。
例
次のようになります:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
ここでt1 はテーブル名であり、括弧内はすべてテーブル定義(つまり、列など)です。
その場合、テーブルはt1という名前のテーブルがまだない場合にのみ作成されます。 。
テーブルが存在することを確認します
sys.table_exists()を使用できます テーブルが現在存在するかどうかを確認する手順:
CALL sys.table_exists('test', 't1', @table_type);
SELECT @table_type; 結果:
+-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+
ここでは、test はデータベースの名前であり、t1 存在を確認しているテーブルの名前です。
この場合、結果はBASE TABLEになります。 これは、テーブルが存在することを意味します。
これは、MySQLにテーブルが存在するかどうかを確認する多くの方法の1つにすぎません。
テーブルをもう一度作成してみてください
ここで、そのテーブルを再度作成しようとすると:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
); エラーは発生しません:
Query OK, 0 rows affected, 1 warning (0.00 sec)
しかし、警告が表示されます。
それでは、警告を確認しましょう:
SHOW WARNINGS; 結果:
+-------+------+---------------------------+ | Level | Code | Message | +-------+------+---------------------------+ | Note | 1050 | Table 't1' already exists | +-------+------+---------------------------+
予想どおり、テーブルはすでに存在していることがわかります。
IF NOT EXISTSなし 条項
IF NOT EXISTSを使用しない場合は次のようになります すでに存在するテーブルを作成しようとするときの句:
CREATE TABLE t1 (
c1 INT,
c2 VARCHAR(10)
); 今回はエラーが発生します:
ERROR 1050 (42S01): Table 't1' already exists
IF NOT EXISTSに注意することが重要です 句はテーブルの構造/定義をチェックしません。作成しているテーブルに付けようとしているのと同じ名前の既存のテーブルがないことを確認するだけです。
つまり、その名前のテーブルがすでに存在しているからといって、それが正しい定義を持っているとは限りません。