Voici quatre façons de vérifier si une table existe ou non dans une base de données MariaDB.
Le information_schema.TABLES
Tableau
Le information_schema.TABLES
table contient des informations sur les différents non-TEMPORARY
tables (à l'exception des tables de la base de données Information Schema) et vues sur le serveur.
Voici un exemple d'interrogation de cette table :
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';
Résultat :
+--------------+------------+------------+ | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | +--------------+------------+------------+ | PetHouse | pets | BASE TABLE | +--------------+------------+------------+
Ici, j'ai retourné la table de base appelée Pets
de la base de données appelée PetHouse
. Interroger ceci sans filtrer les résultats par TABLE_SCHEMA
renvoie les tables de base de toutes les bases de données. Interroger sans filtrer par TABLE_TYPE
renvoie tous les types de table.
Si nous n'avons pas besoin de toutes ces informations, nous pouvons le faire :
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets'
);
Résultat :
1
Ou nous pourrions obtenir le compte :
SELECT COUNT(TABLE_NAME)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets';
Résultat :
+-------------------+ | COUNT(TABLE_NAME) | +-------------------+ | 1 | +-------------------+
Le SHOW TABLES
Commande
Le SHOW TABLES
la commande répertorie les non-TEMPORARY
tables, séquences et vues dans une base de données donnée. Nous pouvons utiliser le WHERE
clause pour le restreindre à un type donné.
Nous pouvons également utiliser le FULL
modificateur pour renvoyer une deuxième colonne qui affiche le type :
SHOW FULL TABLES
WHERE Table_Type LIKE 'BASE TABLE'
AND Tables_in_pethouse LIKE 'Pets';
Résultat :
+--------------------+------------+ | Tables_in_pethouse | Table_type | +--------------------+------------+ | Pets | BASE TABLE | +--------------------+------------+
Dans ce cas, le nom de la base de données est pethouse
, et donc la première colonne est Tables_in_pethouse
.
Le SHOW TABLE STATUS
Commande
Le SHOW TABLE STATUS
La commande est similaire à la commande SHOW TABLES
commande mais fournit des informations plus détaillées sur chacun (non TEMPORARY
) tableau.
Exemple :
SHOW TABLE STATUS
FROM PetHouse
WHERE Name = 'Pets';
Résultat :
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+ | 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 | +------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+
Le mariadb-show
Client
Une autre façon de le faire est avec le mariadb-show
utilitaire.
Pour utiliser cette option, ouvrez une invite de ligne de commande/fenêtre de terminal et exécutez ce qui suit (en remplaçant pethouse
avec la base de données qui vous intéresse) :
mariadb-show pethouse;
Résultat :
+---------------+ | Tables | +---------------+ | Owners | | PetTypes | | Pets | | vownercount | | vpetcount | | vpetsowners | | vpetstypes | | vpettypecount | +---------------+
Cela renvoie des vues et des tables.
La sortie affiche uniquement les noms des bases de données, tables ou colonnes pour lesquelles vous disposez de certains privilèges.
Si aucune base de données n'est indiquée, toutes les bases de données correspondantes sont affichées. Si aucune table n'est donnée, toutes les tables correspondantes dans la base de données sont affichées. Si aucune colonne n'est donnée, toutes les colonnes et tous les types de colonnes correspondants dans le tableau sont affichés.
Le client peut également être exécuté en tant que mysqlshow
:
mysqlshow pethouse;
Cet utilitaire accepte pas mal d'options, telles que --user
(pour que vous puissiez passer le nom d'utilisateur), --password
(afin que vous puissiez passer le mot de passe), etc.
Consultez la documentation de MariaDB pour une liste complète des options.
Vérifiez si une table existe déjà avant de la créer
Si vous devez créer la table si elle n'existe pas, vous pouvez utiliser le IF NOT EXISTS
clause de la CREATE TABLE
déclaration. Si la table n'existe pas, elle sera créée. S'il existe déjà, il ne sera pas créé.
Voir Comment créer une table uniquement si elle n'existe pas dans MariaDB pour un exemple.