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

4 måder at kontrollere, om der findes en tabel i MariaDB

Her er fire måder at kontrollere, om der findes en tabel i en MariaDB-database eller ej.

information_schema.TABLES Tabel

information_schema.TABLES tabel indeholder information om de forskellige ikke-TEMPORARY tabeller (undtagen tabeller fra Information Schema-databasen) og visninger på serveren.

Her er et eksempel på forespørgsler i denne tabel:

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

Resultat:

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

Her returnerede jeg basistabellen kaldet Pets fra databasen kaldet PetHouse . Forespørger om dette uden at filtrere resultaterne efter TABLE_SCHEMA returnerer basistabeller fra alle databaser. Forespørger uden at filtrere efter TABLE_TYPE returnerer alle tabeltyper.

Hvis vi ikke har brug for al den information, kan vi gøre dette:

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

Resultat:

1

Eller vi kunne få optællingen:

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

Resultat:

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

SHOW TABLES Kommando

SHOW TABLES kommandoen viser den ikke-TEMPORARY tabeller, sekvenser og visninger i en given database. Vi kan bruge WHERE klausul for at indsnævre den til en given type.

Vi kan også bruge FULL modifikator for at returnere en anden kolonne, der viser typen:

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

Resultat:

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

I dette tilfælde er databasenavnet pethouse , og så den første kolonne er Tables_in_pethouse .

SHOW TABLE STATUS Kommando

SHOW TABLE STATUS kommandoen ligner SHOW TABLES kommando, men giver mere omfattende information om hver (ikke-TEMPORARY). ) tabel.

Eksempel:

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

Resultat:

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

En anden måde at gøre det på er med mariadb-show nytte.

For at bruge denne mulighed skal du åbne en kommandolinjeprompt/terminalvindue og køre følgende (erstat pethouse med den database, du er interesseret i):

mariadb-show pethouse;

Resultat:

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

Dette returnerer visninger og tabeller.

Outputtet viser kun navnene på de databaser, tabeller eller kolonner, som du har nogle privilegier til.

Hvis der ikke er angivet nogen database, vises alle matchende databaser. Hvis der ikke er angivet nogen tabel, vises alle matchende tabeller i databasen. Hvis der ikke er angivet nogen kolonne, vises alle matchende kolonner og kolonnetyper i tabellen.

Klienten kan også køres som mysqlshow :

mysqlshow pethouse;

Dette værktøj accepterer en hel del muligheder, såsom --user (så du kan videregive brugernavnet), --password (så du kan videregive adgangskoden) osv.

Se MariaDBs dokumentation for en komplet liste over muligheder.

Tjek, om der allerede findes en tabel, før du opretter den

Hvis du har brug for at oprette tabellen, hvis den ikke eksisterer, kan du bruge IF NOT EXISTS klausul i CREATE TABLE udmelding. Hvis tabellen ikke eksisterer, oprettes den. Hvis den allerede findes, bliver den ikke oprettet.

Se Sådan opretter du kun en tabel, hvis den ikke findes i MariaDB for et eksempel.


  1. ORACLE Efter opdateringstrigger:løser ORA-04091 mutationstabelfejl

  2. Hvordan opretter man funktion i PL/SQL?

  3. AMD EPYC-processorer i virtuelle Azure-maskiner

  4. Hvordan kan jeg aktivere MySQL's langsomme forespørgselslog uden at genstarte MySQL?