Her er fem måder at kontrollere, om der findes en tabel i en MySQL-database.
table_exists() Fremgangsmåde
I MySQL er sys.table_exists() lagret procedure tester, om en given tabel eksisterer som en almindelig tabel, en TEMPORARY bord eller udsigt. Proceduren returnerer tabeltypen i en OUT parameter.
Eksempel:
CALL sys.table_exists('Music', 'Albums', @table_type);
SELECT @table_type; Resultat:
+-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+
Bemærk, at hvis der både findes en midlertidig og en permanent tabel med det angivne navn, TEMPORARY er returneret.
information_schema.TABLES Tabel
En anden måde at kontrollere, om der findes en tabel på, er at forespørge på information_schema.TABLES tabel:
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 dette tilfælde returnerede jeg basistabellen kaldet Artists fra databasen kaldet music . 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 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'
); Resultat:
1
Eller vi kunne få optællingen:
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 kommandoen viser den ikke-TEMPORARY tabeller, sekvenser og visninger i en given MySQL-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_music LIKE 'Albums'; Resultat:
+-----------------+------------+ | Tables_in_music | Table_type | +-----------------+------------+ | Albums | BASE TABLE | +-----------------+------------+
I dette tilfælde er databasenavnet music , og så den første kolonne er Tables_in_music .
SHOW TABLE STATUS Kommando
I MySQL er SHOW TABLE STATUS kommandoen ligner SHOW TABLES kommando, men giver mere omfattende information om hver (ikke-TEMPORARY). ) tabel.
Eksempel:
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
En anden måde at kontrollere tabellerne i en MySQL-database på er at bruge mysqlshow klient.
For at bruge dette værktøj skal du åbne en kommandolinjeprompt/terminalvindue og køre følgende:
mysqlshow --user root --password music;
Sørg for at erstatte music med den database, du er interesseret i, og root med den relevante bruger. --password bit resulterer i, at brugeren bliver bedt om adgangskoden.
Resultat:
Enter password: Database: music +----------------+ | Tables | +----------------+ | Albums | | Artists | | Genres | | valbumsartists | | valbumsgenres | | vallalbums | | vallartists | | vallgenres | +----------------+
mysqlshow klient returnerer visninger og tabeller.
Outputtet viser kun navnene på de databaser, tabeller eller kolonner, som brugeren 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.
Tjek, om der allerede findes en tabel, før du opretter den
Hvis du har brug for at oprette tabellen, hvis den ikke findes, 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 hvordan man kontrollerer, om en tabel allerede eksisterer, før den oprettes i MySQL for et eksempel.