Ето четири начина да проверите дали таблица съществува или не в база данни на MariaDB.
information_schema.TABLES
Таблица
information_schema.TABLES
таблицата съдържа информация за различните не-TEMPORARY
таблици (с изключение на таблици от базата данни на информационната схема) и изгледи на сървъра.
Ето пример за заявка към тази таблица:
SELECT
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets';
Резултат:
+--------------+------------+------------+ | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | +--------------+------------+------------+ | PetHouse | pets | BASE TABLE | +--------------+------------+------------+
Тук върнах основната таблица, наречена Pets
от базата данни, наречена PetHouse
. Запитване за това без филтриране на резултатите по TABLE_SCHEMA
връща базови таблици от всички бази данни. Запитване без филтриране по TABLE_TYPE
връща всички типове таблици.
Ако нямаме нужда от цялата тази информация, можем да направим това:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets'
);
Резултат:
1
Или можем да получим броя:
SELECT COUNT(TABLE_NAME)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets';
Резултат:
+-------------------+ | COUNT(TABLE_NAME) | +-------------------+ | 1 | +-------------------+
SHOW TABLES
Команда
SHOW TABLES
командата изброява не-TEMPORARY
таблици, последователности и изгледи в дадена база данни. Можем да използваме WHERE
клауза, за да го стесните до даден тип.
Можем също да използваме FULL
модификатор за връщане на втора колона, която показва типа:
SHOW FULL TABLES
WHERE Table_Type LIKE 'BASE TABLE'
AND Tables_in_pethouse LIKE 'Pets';
Резултат:
+--------------------+------------+ | Tables_in_pethouse | Table_type | +--------------------+------------+ | Pets | BASE TABLE | +--------------------+------------+
В този случай името на базата данни е pethouse
, така че първата колона е Tables_in_pethouse
.
SHOW TABLE STATUS
Команда
SHOW TABLE STATUS
командата е подобна на SHOW TABLES
команда, но предоставя по-подробна информация за всеки (не-TEMPORARY
) таблица.
Пример:
SHOW TABLE STATUS
FROM PetHouse
WHERE Name = 'Pets';
Резултат:
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | Max_index_length | Temporary | +------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+ | Pets | InnoDB | 10 | Dynamic | 8 | 2048 | 16384 | 0 | 32768 | 0 | NULL | 2021-04-01 15:42:43 | NULL | NULL | utf8mb4_general_ci | NULL | | | 0 | N | +------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+
mariadb-show
Клиент
Друг начин да го направите е с mariadb-show
полезност.
За да използвате тази опция, отворете прозорец на командния ред/терминал и изпълнете следното (заменяйки pethouse
с базата данни, от която се интересувате):
mariadb-show pethouse;
Резултат:
+---------------+ | Tables | +---------------+ | Owners | | PetTypes | | Pets | | vownercount | | vpetcount | | vpetsowners | | vpetstypes | | vpettypecount | +---------------+
Това връща изгледи и таблици.
Резултатът показва само имената на тези бази данни, таблици или колони, за които имате някои привилегии.
Ако не е дадена база данни, се показват всички съвпадащи бази данни. Ако не е дадена таблица, тогава се показват всички съответстващи таблици в базата данни. Ако не е дадена колона, тогава се показват всички съвпадащи колони и типове колони в таблицата.
Клиентът може да се стартира и като mysqlshow
:
mysqlshow pethouse;
Тази помощна програма приема доста опции, като --user
(за да можете да подадете потребителското име), --password
(за да можете да предадете паролата) и т.н.
Вижте документацията на MariaDB за пълен списък с опции.
Проверете дали таблицата вече съществува, преди да я създадете
Ако трябва да създадете таблицата, ако тя не съществува, можете да използвате IF NOT EXISTS
клауза на CREATE TABLE
изявление. Ако таблицата не съществува, тя ще бъде създадена. Ако вече съществува, няма да бъде създаден.
Вижте как да създадете таблица само ако тя не съществува в MariaDB за пример.