MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Създайте таблица само ако тя не съществува в MariaDB

В MariaDB можете да използвате IF NOT EXISTS клауза на CREATE TABLE оператор, за да проверите дали таблица със същото име вече съществува в базата данни, преди да я създадете.

Таблицата ще бъде създадена само ако вече няма такава със същото име.

Пример

Ето пример за демонстрация:

CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Тук t1 е името на таблицата, а всичко между скобите е дефиницията на таблицата (т.е. колони и т.н.).

В този случай таблицата ще бъде създадена само ако вече няма такава, наречена t1 .

Проверете дали таблицата вече съществува

Можем да потърсим information_schema.tables таблица, за да проверите дали таблицата вече съществува:

SELECT EXISTS (
    SELECT 
        TABLE_NAME
    FROM 
    information_schema.tables 
    WHERE 
    TABLE_SCHEMA LIKE 'zap' AND 
        TABLE_TYPE LIKE 'BASE TABLE' AND
        TABLE_NAME = 't1'
    );

Резултат:

1

Тук zap е името на базата данни и t1 е името на таблицата, за която проверявам съществуването.

1 означава, че таблицата съществува. Ако не съществуваше, щяхме да получим 0 .

Опитайте да създадете таблицата отново

Сега, ако се опитаме да създадем тази таблица отново:

CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Не получаваме грешка:

Query OK, 0 rows affected, 1 warning (0.002 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 клаузата не проверява структурата/дефиницията на таблицата. Той просто проверява дали няма съществуваща таблица със същото име, която се опитваме да дадем на таблицата, която създаваме.

С други думи, само защото таблица с това име вече съществува, това не означава, че има правилната дефиниция.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как NOT LIKE работи в MariaDB

  2. Как RADIANS() работи в MariaDB

  3. Как работи CONVERT_TZ() в MariaDB

  4. Как да направите вашата MySQL или MariaDB база данни високодостъпна в AWS и Google Cloud

  5. Сравняване на облачните предложения на Galera Cluster:Част втора Google Cloud Platform (GCP)