Här är fem sätt att kontrollera om en tabell finns i en MySQL-databas eller inte.
table_exists() Procedur
I MySQL, sys.table_exists() lagrad procedur testar om en given tabell existerar som en vanlig tabell, en TEMPORARY bord eller en vy. Proceduren returnerar tabelltypen i en OUT parameter.
Exempel:
CALL sys.table_exists('Music', 'Albums', @table_type);
SELECT @table_type; Resultat:
+-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+
Observera att om både en temporär och en permanent tabell finns med det angivna namnet, TEMPORARY returneras.
information_schema.TABLES Tabell
Ett annat sätt att kontrollera om en tabell finns är att fråga information_schema.TABLES tabell:
SELECT
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'; Resultat:
+--------------+------------+------------+ | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | +--------------+------------+------------+ | Music | Artists | BASE TABLE | +--------------+------------+------------+
I det här fallet returnerade jag bastabellen som heter Artists från databasen som heter music . 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 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'
); Resultat:
1
Eller så kan vi få räkningen:
SELECT COUNT(TABLE_NAME)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'; Resultat:
+-------------------+ | COUNT(TABLE_NAME) | +-------------------+ | 1 | +-------------------+
SHOW TABLES Kommando
SHOW TABLES kommandot listar icke-TEMPORARY tabeller, sekvenser och vyer i en given MySQL-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_music LIKE 'Albums'; Resultat:
+-----------------+------------+ | Tables_in_music | Table_type | +-----------------+------------+ | Albums | BASE TABLE | +-----------------+------------+
I det här fallet är databasnamnet music , och så den första kolumnen är Tables_in_music .
SHOW TABLE STATUS Kommando
I MySQL, 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 Music
WHERE Name = 'Albums'; 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 | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Albums | InnoDB | 10 | Dynamic | 20 | 819 | 16384 | 0 | 32768 | 0 | 21 | 2021-11-13 12:56:02 | 2021-11-13 12:56:13 | NULL | utf8mb4_0900_ai_ci | NULL | | | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
mysqlshow Klient
Ett annat sätt att kontrollera tabellerna i en MySQL-databas är att använda mysqlshow klient.
För att använda det här verktyget, öppna en kommandoradsprompt/terminalfönster och kör följande:
mysqlshow --user root --password music;
Se till att ersätta music med databasen du är intresserad av och root med den aktuella användaren. --password biten resulterar i att användaren tillfrågas om lösenordet.
Resultat:
Enter password: Database: music +----------------+ | Tables | +----------------+ | Albums | | Artists | | Genres | | valbumsartists | | valbumsgenres | | vallalbums | | vallartists | | vallgenres | +----------------+
mysqlshow klienten returnerar vyer och tabeller.
Utdatan visar endast namnen på de databaser, tabeller eller kolumner som användaren 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.
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 du kontrollerar om en tabell redan finns innan du skapar den i MySQL för ett exempel.