Mysql
 sql >> база данни >  >> RDS >> Mysql

5 начина да проверите дали таблица съществува в MySQL

Ето пет начина да проверите дали таблица съществува или не в MySQL база данни.

table_exists() Процедура

В MySQL sys.table_exists() запомнената процедура тества дали дадена таблица съществува като обикновена таблица, TEMPORARY маса или изглед. Процедурата връща типа на таблицата в OUT параметър.

Пример:

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

Резултат:

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

Имайте предвид, че ако съществуват както временна, така и постоянна таблица с даденото име, TEMPORARY се връща.

information_schema.TABLES Таблица

Друг начин да проверите дали съществува таблица е да потърсите information_schema.TABLES таблица:

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

Резултат:

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

В този случай върнах основната таблица, наречена Artists от базата данни, наречена music . Запитване за това без филтриране на резултатите по TABLE_SCHEMA връща базови таблици от всички бази данни. Запитване без филтриране по TABLE_TYPE връща всички типове таблици.

Ако нямаме нужда от цялата тази информация, можем да направим това:

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

Резултат:

1

Или можем да получим броя:

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

Резултат:

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

SHOW TABLES Команда

SHOW TABLES командата изброява не-TEMPORARY таблици, последователности и изгледи в дадена MySQL база данни. Можем да използваме WHERE клауза, за да го стесните до даден тип.

Можем също да използваме FULL модификатор за връщане на втора колона, която показва типа:

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

Резултат:

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

В този случай името на базата данни е music , така че първата колона е Tables_in_music .

SHOW TABLE STATUS Команда

В MySQL, SHOW TABLE STATUS командата е подобна на SHOW TABLES команда, но предоставя по-подробна информация за всеки (не-TEMPORARY ) таблица.

Пример:

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

Резултат:

+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
| 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 Клиент

Друг начин да проверите таблиците в MySQL база данни е да използвате mysqlshow клиент.

За да използвате тази помощна програма, отворете прозорец на командния ред/терминал и изпълнете следното:

mysqlshow --user root --password music;

Не забравяйте да замените music с базата данни, която ви интересува, и root със съответния потребител. --password бит води до подканване на потребителя за парола.

Резултат:

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

mysqlshow клиентът връща изгледи и таблици.

Резултатът показва само имената на тези бази данни, таблици или колони, за които потребителят има някои привилегии.

Ако не е дадена база данни, се показват всички съвпадащи бази данни. Ако не е дадена таблица, тогава се показват всички съответстващи таблици в базата данни. Ако не е дадена колона, тогава се показват всички съвпадащи колони и типове колони в таблицата.

Проверете дали таблицата вече съществува, преди да я създадете

Ако трябва да създадете таблицата, ако тя не съществува, можете да използвате IF NOT EXISTS клауза на CREATE TABLE изявление. Ако таблицата не съществува, тя ще бъде създадена. Ако вече съществува, няма да бъде създаден.

Вижте как да проверите дали таблица вече съществува, преди да я създадете в MySQL за пример.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Търсите просто пълнотекстово търсене? Опитайте MySQL InnoDB + CakePHP с Word Stemming

  2. Кога да затворите курсорите с MySQLdb

  3. Получавате имена на колони на таблицата в MySQL?

  4. JSON_VALID() – Тествайте за валиден JSON в MySQL

  5. Моята MySQL база данни е повредена... Какво да направя сега?