MariaDB
 sql >> Database >  >> RDS >> MariaDB

4 modi per verificare se esiste una tabella in MariaDB

Ecco quattro modi per verificare se esiste o meno una tabella in un database MariaDB.

Il information_schema.TABLES Tabella

Lo information_schema.TABLES la tabella contiene informazioni sui vari non TEMPORARY tabelle (tranne le tabelle del database Information Schema) e viste sul server.

Ecco un esempio di query su questa tabella:

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';

Risultato:

+--------------+------------+------------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE |
+--------------+------------+------------+
| PetHouse     | pets       | BASE TABLE |
+--------------+------------+------------+

Qui, ho restituito la tabella di base chiamata Pets dal database chiamato PetHouse . Interrogazione senza filtrare i risultati per TABLE_SCHEMA restituisce le tabelle di base da tutti i database. Interrogandolo senza filtrare per TABLE_TYPE restituisce tutti i tipi di tabella.

Se non abbiamo bisogno di tutte queste informazioni, possiamo farlo:

SELECT EXISTS (
    SELECT 
        TABLE_NAME
    FROM 
    information_schema.TABLES 
    WHERE 
    TABLE_SCHEMA LIKE 'PetHouse' AND 
        TABLE_TYPE LIKE 'BASE TABLE' AND
        TABLE_NAME = 'Pets'
    );

Risultato:

1

Oppure potremmo ottenere il conteggio:

SELECT COUNT(TABLE_NAME)
FROM 
   information_schema.TABLES 
WHERE 
   TABLE_SCHEMA LIKE 'PetHouse' AND 
	TABLE_TYPE LIKE 'BASE TABLE' AND
	TABLE_NAME = 'Pets';

Risultato:

+-------------------+
| COUNT(TABLE_NAME) |
+-------------------+
|                 1 |
+-------------------+

Il SHOW TABLES Comando

Il SHOW TABLES il comando elenca il non-TEMPORARY tabelle, sequenze e viste in un determinato database. Possiamo usare il WHERE clausola per restringerla a un determinato tipo.

Possiamo anche usare il FULL modificatore per restituire una seconda colonna che mostra il tipo:

SHOW FULL TABLES
WHERE Table_Type LIKE 'BASE TABLE'
AND Tables_in_pethouse LIKE 'Pets';

Risultato:

+--------------------+------------+
| Tables_in_pethouse | Table_type |
+--------------------+------------+
| Pets               | BASE TABLE |
+--------------------+------------+

In questo caso il nome del database è pethouse , quindi la prima colonna è Tables_in_pethouse .

Lo SHOW TABLE STATUS Comando

Lo SHOW TABLE STATUS il comando è simile a SHOW TABLES comando ma fornisce informazioni più estese su ciascuno (non-TEMPORARY ) tabella.

Esempio:

SHOW TABLE STATUS
FROM PetHouse
WHERE Name = 'Pets';

Risultato:

+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+
| 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         |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+

Il mariadb-show Cliente

Un altro modo per farlo è con mariadb-show utilità.

Per utilizzare questa opzione, apri un prompt della riga di comando/una finestra del terminale ed esegui quanto segue (sostituendo pethouse con il database che ti interessa):

mariadb-show pethouse;

Risultato:

+---------------+
|    Tables     |
+---------------+
| Owners        |
| PetTypes      |
| Pets          |
| vownercount   |
| vpetcount     |
| vpetsowners   |
| vpetstypes    |
| vpettypecount |
+---------------+

Ciò restituisce viste e tabelle.

L'output mostra solo i nomi di quei database, tabelle o colonne per i quali disponi di alcuni privilegi.

Se non viene fornito alcun database, vengono visualizzati tutti i database corrispondenti. Se non viene fornita alcuna tabella, vengono visualizzate tutte le tabelle corrispondenti nel database. Se non viene fornita alcuna colonna, vengono visualizzate tutte le colonne e i tipi di colonna corrispondenti nella tabella.

Il client può anche essere eseguito come mysqlshow :

mysqlshow pethouse;

Questa utility accetta alcune opzioni, come --user (in modo da poter passare il nome utente), --password (in modo da poter passare la password), ecc.

Consulta la documentazione di MariaDB per un elenco completo delle opzioni.

Verifica se esiste già una tabella prima di crearla

Se devi creare la tabella se non esiste, puoi utilizzare il IF NOT EXISTS clausola del CREATE TABLE dichiarazione. Se la tabella non esiste, verrà creata. Se esiste già, non verrà creato.

Vedi Come creare una tabella solo se non esiste in MariaDB per un esempio.