Как вывести список всех таблиц MySQL и количество строк в каждой из них впри помощи PHP?
Надо вывести список всех таблиц и чтобы рядом стояло количество строк в это таблице.
Что я делаю не так?
Список пуст!
"; > else < while ($table = mysqli_fetch_array($result)) < $numread = mysqli_num_rows($link, "SELECT * FROM `$table[0]`"); echo "
таб $table[0]. Кол-во строк: $numread
"; > > ?>
- Вопрос задан более трёх лет назад
- 6015 просмотров
2 комментария
Простой 2 комментария
Konata Izumi @Konata69lol
Что выводит?
Какие-то ошибки?

Иван @FSystem88 Автор вопроса
Konata Izumi, выводит только список таблиц, а количество строк не выводит
Решения вопроса 1

Игорь Воротнёв @HeadOnFire
PHP, Laravel & WordPress Evangelist
SHOW TABLES FROM database_name прекрасно работает когда база не выбрана. Здесь мы показываем таблицы в базе, а не в $db_table. Исходя из вашего нейминга, вы просите таблицу показать ее таблицы, что абсурдно само по себе. Обращайтесь к базе. Или, если вы базу предварительно уже выбрали, то достаточно SHOW TABLES .
Далее, для SELECT * FROM table_name уже сначала нужно выбрать базу данных (которую вы опрашивали на предмет таблиц в первом запросе), или же обращаться к таблице в формате database_name.table_name.
Ну и, вместо того чтобы делать выборку всех строк со всеми колонками, спросите сразу SELECT COUNT(*) FROM database_name.table_name .
Еще проще и быстрее это сделать с помощью такого запроса:
SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your_database_name';
Результат этого запроса:
+-----------------------+------------+ | table_name | table_rows | +-----------------------+------------+ | wp_terms | 10 | | wp_yoast_seo_meta | 61 | | wp_yoast_seo_links | 33 | | wp_commentmeta | 0 | | wp_term_taxonomy | 10 | | wp_ewwwio_queue | 352 | | wp_usermeta | 114 | | wp_options | 281 | | wp_users | 5 | | wp_term_relationships | 49 | | wp_ewwwio_images | 1048 | | wp_links | 0 | | wp_postmeta | 21408 | | wp_termmeta | 0 | | wp_comments | 0 | | wp_posts | 738 | +-----------------------+------------+
Единственное, что нужно учесть — если таблицы у вас InnoDB, то данные цифры будут более-менее точными, но не совсем. В силу механизмов оптимизации. Так что если нужно «приблизительно» понимать — используйте данный метод. Если нужно с точностью до одной строки — тогда COUNT.
Ну и еще можно сделать SHOW TABLE STATUS , находять в выбранной базе данных. Точность подсчета количества строк на InnoDB такая же, как и предыдущем методе, но зато здесь будет еще много полезной информации. Например — avg_row_length, data_length, index_length и другое.
Список (показать) таблиц в базе данных MySQL
При управлении серверами баз данных MySQL одной из самых частых задач, которые вы выполняете, является знакомство со средой. Это включает в себя перечисление баз данных, которые находятся на сервере, отображение таблиц баз данных или выборку информации об учетных записях пользователей и их привилегиях.
В этой статье показано, как составить список таблиц в базе данных MySQL или MariaDB через командную строку.
Показать таблицы MySQL
Чтобы получить список таблиц в базе данных MySQL, используйте клиентский инструмент mysql для подключения к серверу MySQL и выполните команду SHOW TABLES.
Получите доступ к серверу MySQL:
mysql -u user -p
Из оболочки MySQL переключитесь на базу данных с помощью инструкции USE:
USE database_name;
Выполните следующую команду, чтобы получить список всех таблиц и представлений в текущей базе данных:
SHOW TABLES;
Вывод будет выглядеть примерно так:
+----------------------------+ | Tables_in_database_name | +----------------------------+ | actions | | permissions | | permissions_roles | | permissions_users | | roles | | roles_users | | settings | | users | +----------------------------+ 8 rows in set (0.00 sec)
Необязательный модификатор FULL покажет тип таблицы в качестве второго выходного столбца.
SHOW FULL TABLES;
Вывод будет выглядеть примерно так:
+----------------------------+------------+ | Tables_in_database_name | Table_type | +----------------------------+------------+ | actions | VIEW | | permissions | BASE TABLE | | permissions_roles | BASE TABLE | | permissions_users | BASE TABLE | | roles | BASE TABLE | | roles_users | BASE TABLE | | settings | BASE TABLE | | users | BASE TABLE | +----------------------------+------------+ 8 rows in set (0.00 sec)
Чтобы получить список таблиц без переключения на базу данных, используйте предложение FROM или IN, за которым следует имя базы данных:
SHOW TABLES FROM database_name;
Предложение LIKE можно использовать для фильтрации выходных данных c командой SHOW TABLES в соответствии с определенным шаблоном.
SHOW TABLES LIKE pattern;
Например, следующий оператор вернет все базы данных, имена которых начинаются с ‘open’:
SHOW TABLES LIKE 'permissions%';
+-------------------------------------------+ | Tables_in_database_name (permissions%) | +-------------------------------------------+ | permissions | | permissions_roles | | permissions_users | +-------------------------------------------+ 3 rows in set (0.00 sec)
Знак процента (%) означает ноль, один или несколько символов.
Показывать таблицы MySQL из командной строки
Чтобы получить информацию о таблицах из оболочки Linux, вы можете использовать либо команду mysql -e, либо команду mysqlshow, которая отображает информацию о базах данных и таблицах.
Это особенно полезно, когда вы хотите работать с базами данных MySQL, используя сценарии оболочки.
Запустите следующую команду на своем терминале, чтобы показать список всех баз данных:
mysql -u user -p -e 'SHOW TABLES FROM database_name;'
Вывод отобразит список всех таблиц:
+----------------------------+ | Tables_in_database_name | +----------------------------+ | actions | | permissions | | permissions_roles | | permissions_users | | roles | | roles_users | | settings | | users | +----------------------------+
Вот пример использования команды mysqlshow:
mysqlshow database_name
Вы можете отфильтровать вывод с помощью команды grep.
Заключение
Чтобы получить информацию о таблицах в базе данных MySQL, используйте команду SHOW TABLES.
Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Как вывести список таблиц sql
Можно использовать два альтернативных синтаксиса — tbl_name FROM db_name и db_name.tbl_name . Приведенные ниже два оператора эквивалентны:
mysql> SHOW INDEX FROM mytable FROM mydb; mysql> SHOW INDEX FROM mydb.mytable;
Команда SHOW DATABASES выдает список баз данных на компьютере, где установлен сервер MySQL. Этот список можно также получить, воспользовавшись инструментом командной строки mysqlshow . В версии 4.0.2 можно увидеть только те базы данных, для которых у вас есть какие-либо привилегии, если вы не имеете глобальной привилегии SHOW DATABASES .
Команда SHOW TABLES выводит список таблиц в указанной базе данных. Этот список также можно получить, используя команду mysqlshow db_name .
Примечание: если у пользователя нет никаких привилегий для таблицы, таблица не будет показана в результатах команды SHOW TABLES или mysqlshow db_name .
Команда SHOW OPEN TABLES выводит список таблиц, которые в настоящий момент открыты в кэше таблицы. See section 5.4.7 Открытие и закрытие таблиц в MySQL. В поле Comment указывается, сколько раз таблица кэшировалась ( cached ) и сколько раз использовалась ( in_use ).
Команда SHOW COLUMNS выводит список столбцов в заданной таблице. Если указать параметр FULL , то будут показаны также ваши привилегии для каждого столбца. Если типы столбцов отличаются от заданных в параметрах оператора CREATE TABLE , учтите, что MySQL иногда изменяет типы столбцов. See section 6.5.3.1 Молчаливые изменения определений столбцов.
Оператор DESCRIBE предоставляет почти такую же информацию, что и SHOW COLUMNS . See section 6.6.2 Синтаксис команды DESCRIBE (Получение информации о столбцах).
Команда SHOW FIELDS является синонимом команды SHOW COLUMNS , а команда SHOW KEYS — синонимом SHOW INDEX . Список столбцов или индексов таблицы можно также вывести при помощи команды mysqlshow db_name tbl_name или mysqlshow -k db_name tbl_name .
Команда SHOW INDEX выводит информацию по индексу в формате, подобном формату вывода запроса SQLStatistics в ODBC . Выводятся следующие столбцы:
| Столбец | Значение |
| Table | Имя таблицы. |
| Non_unique | 0 если индекс не может содержать дублирующихся значений. |
| Key_name | Имя индекса. |
| Seq_in_index | Порядковый номер столбца в индексе, начиная с 1. |
| Column_name | Имя столбца. |
| Collation | Как столбцы отсортированы в индексе. В MySQL в данном столбце могут присутствовать значения ‘A’ (в порядке возрастания) или NULL (не отсортирован). |
| Cardinality | Количество уникальных значений в индексе. Обновляется путем запуска isamchk -a . |
| Sub_part Количество индексированных символов, если столбец индексируется частично. Если проиндексирован весь ключ, то будет содержаться значение NULL . | |
| Null | Содержит значение ‘YES’ , если столбец может содержать NULL . |
| Index_type Используемый метод индексирования. | |
| Comment | Различные примечания. На данный момент в версиях MySQL < 4.0.2 выдается, является индекс FULLTEXT или нет. |
Обратите внимание на то, что значение Cardinality подсчитывается по результатам статистики, сохраняющейся в виде целых чисел, которые недостаточно точны для небольших таблиц.
Столбцы Null и Index_type были добавлены начиная с версии MySQL 4.0.2.
MS SQL Server — как вывести список всех таблиц
В MS SQL Server вывести список всех таблиц (TABLE_TYPE = BASE TABLE) и въюхи (TABLE_TYPE = VIEW) возможно с помощью запроса:
SELECT '[' + TABLE_SCHEMA + ']' + '.' + '[' + TABLE_Name + ']' as "наименование таблиц", * FROM INFORMATION_SCHEMA.TABLES order by 1
, где в результате выполнения запроса
TABLE_CATALOG — наименование базы данных
TABLE_SCHEMA — наименование схемы базы данных
TABLE_NAME — наименование объекта (таблицы)
TABLE_TYPE — тип объекта ( таблица TABLE_TYPE = BASE TABLE, въюха (TABLE_TYPE = VIEW)
