sql >> Databasteknik >  >> RDS >> MariaDB

4 sätt att kontrollera om en tabell finns i MariaDB

Här är fyra sätt att kontrollera om en tabell finns i en MariaDB-databas eller inte.

information_schema.TABLES Tabell

information_schema.TABLES Tabellen innehåller information om de olika icke-TEMPORARY tabeller (förutom tabeller från Information Schema-databasen) och vyer på servern.

Här är ett exempel på att fråga efter den här tabellen:

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

Här returnerade jag bastabellen som heter Pets från databasen som heter PetHouse . Frågar detta utan att filtrera resultaten efter TABLE_SCHEMA returnerar bastabeller från alla databaser. Frågar den utan att filtrera efter TABLE_TYPE returnerar alla tabelltyper.

Om vi ​​inte behöver all den informationen kan vi göra så här:

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 så kan vi få räkningen:

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 kommandot listar icke-TEMPORARY tabeller, sekvenser och vyer i en given databas. Vi kan använda WHERE klausul för att begränsa den till en given typ.

Vi kan också använda FULL modifierare för att returnera en andra kolumn som visar 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 det här fallet är databasnamnet pethouse , och så den första kolumnen är Tables_in_pethouse .

SHOW TABLE STATUS Kommando

SHOW TABLE STATUS kommandot liknar SHOW TABLES kommando men ger mer omfattande information om var och en (icke-TEMPORARY ) tabell.

Exempel:

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

Ett annat sätt att göra det är med mariadb-show verktyg.

För att använda det här alternativet, öppna en kommandoradsprompt/terminalfönster och kör följande (ersätter pethouse med databasen du är intresserad av):

mariadb-show pethouse;

Resultat:

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

Detta returnerar vyer och tabeller.

Utdatan visar endast namnen på de databaser, tabeller eller kolumner som du har vissa privilegier för.

Om ingen databas anges visas alla matchande databaser. Om ingen tabell anges visas alla matchande tabeller i databasen. Om ingen kolumn anges visas alla matchande kolumner och kolumntyper i tabellen.

Klienten kan också köras som mysqlshow :

mysqlshow pethouse;

Det här verktyget accepterar en hel del alternativ, såsom --user (så att du kan skicka användarnamnet), --password (så att du kan skicka lösenordet) etc.

Se MariaDB:s dokumentation för en fullständig lista över alternativ.

Kontrollera om en tabell redan finns innan du skapar den

Om du behöver skapa tabellen om den inte finns kan du använda IF NOT EXISTS satsen i CREATE TABLE påstående. Om tabellen inte finns skapas den. Om den redan finns skapas den inte.

Se hur man skapar en tabell endast om den inte finns i MariaDB för ett exempel.


  1. Hur delar man upp en varchar-kolumn som flera värden i SQL?

  2. Hur man rangordnar över partition i MySQL

  3. Chen Notation

  4. Hur man skriver valda uttalanden