Има два основни метода за преглед на таблиците в MySQL:
- MYSQL SHOW МАССИ команда.
- Запитване на Information_schema.tables маса.
В тази статия ще разгледаме и двете.
Команда за MySQL SHOW TABLES
Командата show tables показва списъка на всички таблици, създадени в база данни. Синтаксисът е следният:
SHOW [EXTENDED] | [FULL] TABLES
[{FROM} database_name]
[LIKE 'DBNamePattern']
В синтаксиса,
- Модификатори :Можем да използваме някоя от следните опции за преглед на таблиците:
- Разширено – тази опция попълва списъка с таблиците, които са били създадени от неуспешните оператори ALTER TABLE.
- ПЪЛЕН – тази опция показва допълнителна колона, която предоставя типа на таблицата. Това може да бъде основна таблица, изглед или системен изглед.
- ОТ – ако искате да попълните списъка с таблици от конкретната таблица, можете да използвате ключовата дума FROM.
- Харесвам – ако искате да попълните списъка с таблици с определен модел в имената им, можете да използвате ключовата дума LIKE.
Нека видим примерите.
Пример 1:Показване на всички таблици, създадени в конкретна база данни
За да видите всички MySQL таблици, създадени в Sakila база данни, използвайте модификатора FULL и ключовата дума FROM. Изпълнете следната команда:
mysql> SHOW TABLES FROM sakila;
Изход
Както можете да видите, заявката попълни списъка с таблиците от Sakila база данни.
Пример 2:Попълване на списъка с таблици със специфичен модел на ключова дума
Да предположим, че искаме да получим списък с таблици, чиито имена започват с ключовата дума film . Използваме ключовата дума LIKE, за да съответстваме на шаблона.
Но когато използваме LIKE ключова дума, не можем да използваме ОТ модификатор. Заявката е следната:
use sakila;
SHOW TABLES like 'film%'
Изход
Пример 3:Попълнете списъка с таблици с неговия тип
За да попълним списъка с таблици с техния тип, можем да използваме ПЪЛЕН модификатор. Да предположим, че искаме да извлечем списъка с таблици с техните типове, създадени в базата данни Sakila. Вижте следната заявка:
mysql> SHOW FULL TABLES FROM sakila;
Изход
Сега нека попълним списъка с таблици от information_schema.tables .
Таблица за заявка Information_schema.tables
За да видите MySQL таблици, можем да използваме information_schema.tables таблица, която съдържа следната информация:
- Схема_таблица :Име на базата данни или схемата, в която е създадена таблицата.
- Име на таблица: Име на таблицата.
- Тип_таблица: Тип на масата. Може да бъде някое от следните:
- Системен изглед: Списък на системните изгледи. Той съдържа информацията за вътрешните данни на базата данни. Тези изгледи се създават чрез комбиниране на множество базови таблици с информацията за базата данни.
- Основа таблица: Списъкът с базови таблици може да бъде потребителски или системни таблици.
- Преглед: Списък с дефинирани от потребителя изгледи.
- Двигател :Име на базата данни, в която е създадена таблицата.
- Версия :Номерът на версията на .frm файл на таблицата.
- Формат_ред :Форматът на съхранение на редове. Форматът за съхранение на редове може да бъде всеки от следните:
- Поправено
- Компресиран
- Излишно
- Динамичен
- Компактно
- Таблица_редове :Брой редове в таблицата. Ако използвате InnoDB таблици, той връща прогнозния брой редове. За да получите точния брой редове, използвайте SELECT COUNT(*) запитване.
- Ср. дължина_на_реда :Средна дължина на реда на файла с данни.
- Дължина_данни :Ако използвате MyISAM таблици, стойността на data_length колоната е дължината на файла с данни. Ако използвате таблиците InnoDB, стойността на Data_length колоната е размерът на размера, разпределен на клъстерирания индекс, умножен по размера на страницата на InnoDB.
- Макс. дължина на_данните: Максималната разрешена дължина на файла с данни. Това е броят на байтовете, които могат да бъдат съхранени в таблицата.
- Индекс_дължина: Дължината на индекса. Ако използвате MyISAM таблици, стойността на index_length колона показва размера на индекса. Ако използвате таблиците InnoDB, стойността на index_length колоната е общият размер на всички неклъстерирани индекси, умножен по размера на страницата.
- Без данни :Общият брой разпределени, но неизползвани байтове. Ако използвате таблицата InnoDB, стойността на data_free колоната е неизползваното пространство на табличното пространство, в което е създадена таблицата.
- Автоматично_инкремент: Стойността на Auto_increment колоната е следващата стойност за автоматично увеличение.
- Create_time :Датата и часът, когато е създадена таблицата. Когато възстановим базата данни, стойността на create_date ще бъде времето, когато базата данни е била възстановена.
- Update_time :Датата и часът, когато файлът с данни е бил актуализиран. Показва времевата марка на последните INSERT, UPDATE или DELETE оператори, изпълнени в таблиците InnoDB.
- Време на проверка: Датата и часът на последната проверка на таблицата.
- Сравниване на таблици :Името на съпоставянето по подразбиране на таблицата.
- Контролна сума :Стойността на контролната сума.
- Опция_Създаване :Опцията за допълнителна конфигурация, която е била използвана за създаване на таблицата.
- Коментар_таблица :Коментарът или информацията, използвани при създаването на таблицата.
Пример 1:Попълване на списък с всички таблици
Да предположим, че искаме да попълним всички таблици, създадени във всички бази данни. Заявката е следната:
mysql> select table_catalog, table_schema, table_name,table_type,create_time from information_schema.tables;
Изход
Както можете да видите, заявката е попълнила списъка с таблици с името на базата данни и времето за създаване. Заявката върна много записи, така че изходът е изрязан.
Пример 2:Попълване на списък с всички таблици, създадени в конкретна база данни
За да попълните списъка с таблици, създадени в Sakila база данни, можете да приложите филтъра върху Schema_Schema колона:
mysql> select table_catalog, table_schema, table_name,table_type,create_time from information_schema.tables WHERE table_schema='sakila';
Изход
Както можете да видите, заявката е върнала списъка с таблици и изгледи, създадени в базата данни Sakila, времето за създаване и типа.
Пример 3:Попълване на списък на всички таблици с брой редове
Можем да включим Таблица_редове колона, за да видите броя на редовете на MySQL таблици. Да предположим, че искате да получите списък с таблици, чието име започва с film . Резултатът трябва да включва броя на записите в тези таблици.
mysql> select table_catalog, table_schema, table_name,table_type,table_rows from information_schema.tables WHERE table_schema='sakila' and table_name like 'film%' and table_type='BASE TABLE';
Изход
Пример 4:Попълване на броя таблици и изгледи
Например, искаме да получим броя на таблиците и изгледите, създадени в базата данни. За да направите това, изпълнете следната заявка:
mysql> select table_schema as 'Database OR Schema name', count(table_type) as 'Tables and Views', table_type as 'Object Type' from information_schema.tables group by table_type,table_schema;
Изход
Както можете да видите на изображението по-горе, заявката е попълнила броя на таблиците и изгледите, създадени във всички бази данни.
Пример 5:Таблици с техния размер
Сега искаме да попълним списъка с таблици, създадени в Sakila база данни с техния размер. За да генерирате списъка, изпълнете следната заявка:
mysql> SELECT Table_schema as 'Database Name', TABLE_NAME AS 'Table', ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 ) AS 'Size in KB' FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'sakila' and table_type='BASE TABLE' ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC;
Изход
Както можете да видите, заявката е върнала името на базата данни, името на таблицата и размера.
Резюме
Така дефинирахме и се научихме да използваме методите за попълване на списъка с таблици, създадени в базата данни. Разгледахме ШОУ МАССИ команда и след това разгледахме метода за запитване на Information_schema.tables маса. Надяваме се, че тези съвети ще бъдат полезни във вашия работен процес.
Ако искате да научите повече за таблиците в SQL, прочетете статията за временните таблици в SQL Server. И ако искате да добавите нещо, да споделите вашите работни съвети или да обсъдите тези методи, добре дошли в секцията за коментари.