Mysql
 sql >> Baza danych >  >> RDS >> Mysql

5 sposobów na sprawdzenie, czy tabela istnieje w MySQL

Oto pięć sposobów sprawdzenia, czy tabela istnieje w bazie danych MySQL.

table_exists() Procedura

W MySQL, sys.table_exists() procedura składowana sprawdza, czy dana tabela istnieje jako zwykła tabela, a TEMPORARY tabela lub widok. Procedura zwraca typ tabeli w OUT parametr.

Przykład:

CALL sys.table_exists('Music', 'Albums', @table_type); 
SELECT @table_type;

Wynik:

+-------------+
| @table_type |
+-------------+
| BASE TABLE  |
+-------------+

Zauważ, że jeśli istnieje zarówno tymczasowa, jak i stała tabela o podanej nazwie, TEMPORARY jest zwracany.

information_schema.TABLES Tabela

Innym sposobem sprawdzenia, czy tabela istnieje, jest zapytanie o information_schema.TABLES tabela:

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';

Wynik:

+--------------+------------+------------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE |
+--------------+------------+------------+
| Music        | Artists    | BASE TABLE |
+--------------+------------+------------+

W tym przypadku zwróciłem tabelę podstawową o nazwie Artists z bazy danych o nazwie music . Zapytanie o to bez filtrowania wyników według TABLE_SCHEMA zwraca tabele bazowe ze wszystkich baz danych. Zapytanie bez filtrowania według TABLE_TYPE zwraca wszystkie typy tabel.

Jeśli nie potrzebujemy wszystkich tych informacji, możemy to zrobić:

SELECT EXISTS (
    SELECT 
        TABLE_NAME
    FROM 
    information_schema.TABLES 
    WHERE 
    TABLE_SCHEMA LIKE 'music' AND 
        TABLE_TYPE LIKE 'BASE TABLE' AND
        TABLE_NAME = 'Artists'
    );

Wynik:

1

Albo możemy uzyskać liczbę:

SELECT COUNT(TABLE_NAME)
FROM 
   information_schema.TABLES 
WHERE 
   TABLE_SCHEMA LIKE 'music' AND 
	TABLE_TYPE LIKE 'BASE TABLE' AND
	TABLE_NAME = 'Artists';

Wynik:

+-------------------+
| COUNT(TABLE_NAME) |
+-------------------+
|                 1 |
+-------------------+

SHOW TABLES Polecenie

SHOW TABLES polecenie wyświetla listę niebędącą TEMPORARY tabele, sekwencje i widoki w danej bazie danych MySQL. Możemy użyć WHERE klauzulę, aby zawęzić ją do danego typu.

Możemy również użyć FULL modyfikator, aby zwrócić drugą kolumnę wyświetlającą typ:

SHOW FULL TABLES
WHERE Table_Type LIKE 'BASE TABLE'
AND Tables_in_music LIKE 'Albums';

Wynik:

+-----------------+------------+
| Tables_in_music | Table_type |
+-----------------+------------+
| Albums          | BASE TABLE |
+-----------------+------------+

W tym przypadku nazwa bazy danych to music , a więc pierwsza kolumna to Tables_in_music .

SHOW TABLE STATUS Polecenie

W MySQL SHOW TABLE STATUS polecenie jest podobne do polecenia SHOW TABLES polecenie, ale zawiera bardziej szczegółowe informacje o każdym z nich (nie TEMPORARY ) tabeli.

Przykład:

SHOW TABLE STATUS
FROM Music
WHERE Name = 'Albums';

Wynik:

+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
| 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

Innym sposobem sprawdzenia tabel w bazie danych MySQL jest użycie mysqlshow klient.

Aby użyć tego narzędzia, otwórz wiersz poleceń/okno terminala i uruchom następujące polecenie:

mysqlshow --user root --password music;

Pamiętaj, aby zastąpić music z interesującą Cię bazą danych i root z odpowiednim użytkownikiem. --password bit powoduje, że użytkownik jest proszony o podanie hasła.

Wynik:

Enter password: 
Database: music
+----------------+
|     Tables     |
+----------------+
| Albums         |
| Artists        |
| Genres         |
| valbumsartists |
| valbumsgenres  |
| vallalbums     |
| vallartists    |
| vallgenres     |
+----------------+

mysqlshow klient zwraca widoki i tabele.

Dane wyjściowe wyświetlają tylko nazwy tych baz danych, tabel lub kolumn, do których użytkownik ma pewne uprawnienia.

Jeśli nie podano bazy danych, wyświetlane są wszystkie pasujące bazy danych. Jeśli nie podano tabeli, wyświetlane są wszystkie pasujące tabele w bazie danych. Jeśli nie podano żadnej kolumny, wyświetlane są wszystkie pasujące kolumny i typy kolumn w tabeli.

Sprawdź, czy tabela już istnieje przed jej utworzeniem

Jeśli potrzebujesz utworzyć tabelę, jeśli nie istnieje, możesz użyć IF NOT EXISTS klauzula CREATE TABLE oświadczenie. Jeśli tabela nie istnieje, zostanie utworzona. Jeśli już istnieje, nie zostanie utworzony.

Zobacz, jak sprawdzić, czy tabela już istnieje przed utworzeniem jej w MySQL, jako przykład.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Informacje o bazie danych information_schema w MySQL

  2. Jak grupować według miesięcy w MySQL

  3. Jaki jest błąd Każda tabela pochodna musi mieć swój własny alias w MySQL?

  4. Połącz według wcześniejszego odpowiednika dla MySQL

  5. Jak zaimportować dane z pliku tekstowego do bazy mysql