sql >> Databáze >  >> RDS >> Mysql

5 způsobů, jak zkontrolovat, zda tabulka v MySQL existuje

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.


  1. Připojte se k mysql na Amazon EC2 ze vzdáleného serveru

  2. Proč mi použití znaku podtržítka ve filtru LIKE poskytuje všechny výsledky?

  3. Stránkování s Oracle

  4. 2 způsoby, jak přidat znak procenta k číslu v SQLite