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.