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.