Zde je pět způsobů, jak zkontrolovat, zda tabulka v databázi MySQL existuje.
table_exists()
Postup
V MySQL je to sys.table_exists()
uložená procedura testuje, zda daná tabulka existuje jako běžná tabulka, TEMPORARY
stůl nebo pohled. Procedura vrací typ tabulky v OUT
parametr.
Příklad:
CALL sys.table_exists('Music', 'Albums', @table_type);
SELECT @table_type;
Výsledek:
+-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+
Všimněte si, že pokud existuje dočasná i trvalá tabulka s daným názvem TEMPORARY
je vráceno.
information_schema.TABLES
Tabulka
Dalším způsobem, jak zkontrolovat, zda tabulka existuje, je dotaz na information_schema.TABLES
tabulka:
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';
Výsledek:
+--------------+------------+------------+ | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | +--------------+------------+------------+ | Music | Artists | BASE TABLE | +--------------+------------+------------+
V tomto případě jsem vrátil základní tabulku nazvanou Artists
z databáze s názvem music
. Dotaz bez filtrování výsledků podle TABLE_SCHEMA
vrátí základní tabulky ze všech databází. Dotazování bez filtrování podle TABLE_TYPE
vrátí všechny typy tabulek.
Pokud všechny tyto informace nepotřebujeme, můžeme to udělat takto:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'
);
Výsledek:
1
Nebo bychom mohli získat počet:
SELECT COUNT(TABLE_NAME)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists';
Výsledek:
+-------------------+ | COUNT(TABLE_NAME) | +-------------------+ | 1 | +-------------------+
Položka SHOW TABLES
Příkaz
SHOW TABLES
příkaz uvádí neTEMPORARY
tabulky, sekvence a pohledy v dané databázi MySQL. Můžeme použít WHERE
klauzule pro zúžení na daný typ.
Můžeme také použít FULL
modifikátor, který vrátí druhý sloupec, který zobrazuje typ:
SHOW FULL TABLES
WHERE Table_Type LIKE 'BASE TABLE'
AND Tables_in_music LIKE 'Albums';
Výsledek:
+-----------------+------------+ | Tables_in_music | Table_type | +-----------------+------------+ | Albums | BASE TABLE | +-----------------+------------+
V tomto případě je název databáze music
, a tak první sloupec je Tables_in_music
.
Položka SHOW TABLE STATUS
Příkaz
V MySQL SHOW TABLE STATUS
příkaz je podobný příkazu SHOW TABLES
příkaz, ale poskytuje rozsáhlejší informace o každém (neTEMPORARY
) tabulka.
Příklad:
SHOW TABLE STATUS
FROM Music
WHERE Name = 'Albums';
Výsledek:
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | 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
Dalším způsobem, jak zkontrolovat tabulky v databázi MySQL, je použít mysqlshow
klienta.
Chcete-li použít tento nástroj, otevřete okno příkazového řádku/terminálu a spusťte následující:
mysqlshow --user root --password music;
Nezapomeňte nahradit music
s databází, která vás zajímá, a root
s příslušným uživatelem. --password
bit způsobí, že uživatel bude vyzván k zadání hesla.
Výsledek:
Enter password: Database: music +----------------+ | Tables | +----------------+ | Albums | | Artists | | Genres | | valbumsartists | | valbumsgenres | | vallalbums | | vallartists | | vallgenres | +----------------+
mysqlshow
klient vrátí pohledy a tabulky.
Výstup zobrazuje pouze názvy těch databází, tabulek nebo sloupců, pro které má uživatel určitá oprávnění.
Pokud není zadána žádná databáze, zobrazí se všechny odpovídající databáze. Pokud není zadána žádná tabulka, zobrazí se všechny odpovídající tabulky v databázi. Pokud není uveden žádný sloupec, zobrazí se všechny odpovídající sloupce a typy sloupců v tabulce.
Před jejím vytvořením zkontrolujte, zda tabulka již existuje
Pokud potřebujete vytvořit tabulku, pokud neexistuje, můžete použít IF NOT EXISTS
klauzule CREATE TABLE
prohlášení. Pokud tabulka neexistuje, bude vytvořena. Pokud již existuje, nebude vytvořen.
Viz příklad Jak zkontrolovat, zda tabulka již existuje před jejím vytvořením v MySQL.