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.