Запрос для подсчета количества таблиц в MySQL

130

Я увеличиваю количество таблиц, которые у меня есть, и мне иногда бывает любопытно просто выполнить быстрый запрос командной строки, чтобы подсчитать количество таблиц в моей базе данных. Это возможно? Если да, то каков запрос?

Genadinik
источник

Ответы:

297
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName';

Источник

Это мое:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();
Joseadrian
источник
Я пробовал два вышеупомянутых метода, и количество таблиц, которые вернулись, когда я использовал, FOUND_ROWS()было больше, чем количество таблиц, которые вернулись, когда я использовал первый метод.
Amr
это также учитывает просмотры, если вам нужны только таблицы, добавьтеAND table_type = 'BASE TABLE'
Thomasleveil
Замечание о use databasename;команде. Если база данных действительно большая, команда может выполняться с длительным временем ожидания. В этом случае вход в систему должен быть выполнен с опцией -A, то есть:, mysql -uroot -p -Aи команда будет работать быстро.
azurecorn
24

Если вы хотите подсчитать все базы данных плюс сводку, попробуйте следующее:

SELECT IFNULL(table_schema,'Total') "Database",TableCount 
FROM (SELECT COUNT(1) TableCount,table_schema 
      FROM information_schema.tables 
      WHERE table_schema NOT IN ('information_schema','mysql') 
      GROUP BY table_schema WITH ROLLUP) A;

Вот пример выполнения:

mysql> SELECT IFNULL(table_schema,'Total') "Database",TableCount
    -> FROM (SELECT COUNT(1) TableCount,table_schema
    ->       FROM information_schema.tables
    ->       WHERE table_schema NOT IN ('information_schema','mysql')
    ->       GROUP BY table_schema WITH ROLLUP) A;
+--------------------+------------+
| Database           | TableCount |
+--------------------+------------+
| performance_schema |         17 |
| Total              |         17 |
+--------------------+------------+
2 rows in set (0.29 sec)

Попробуйте !!!

RolandoMySQLDBA
источник
1
У меня это заработало, только когда я использовал только подзапрос. При попытке выполнить весь запрос / подзапрос возникла синтаксическая ошибка.
Gaia
2
@Gaia Извини, я забыл, что База данных было зарезервированным словом. Итак, я заключил слово в двойные кавычки.
RolandoMySQLDBA
@RolandoMySQLDBA Это мило, у вас есть такой, который также показывает общий размер всех баз данных?
J. Scott Elblein
@ J.ScottElblein Попробуй мой пост DBA.SE: dba.stackexchange.com/questions/31801/…
RolandoMySQLDBA
Почему в FROMпредложении используется подзапрос ? Почему не просто так SELECT IFNULL(table_schema, 'Total') Database, COUNT(*) TableCount FROM information_schema.tables WHERE table_schema NOT IN ('information_schema','mysql') GROUP BY table_schema WITH ROLLUP?
eggyal
10
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbo' and TABLE_TYPE='BASE TABLE'
Mukund
источник
1
Это должен быть ответ, поскольку не включает просмотры! +1
Testo Testini
4

Это даст вам имена и количество таблиц всех баз данных в вашем mysql

SELECT TABLE_SCHEMA,COUNT(*) FROM information_schema.tables group by TABLE_SCHEMA;
Рохит Дубей
источник
3

Чтобы подсчитать количество столов, просто сделайте это:

USE your_db_name;    -- set database
SHOW TABLES;         -- tables lists
SELECT FOUND_ROWS(); -- number of tables

Иногда легкие вещи сделают работу.

JMM
источник
Это именно то, что есть в принятом ответе, добавленном 5 лет назад.
хороший и однозначный ответ, и дело в очень простой команде. perfect
Ajay2707 04
3
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'database_name';
Арун Касьякар
источник
Это довольно очевидно для тех, кто знаком с этим запросом, но для тех, кто не знаком, небольшое объяснение было бы отличным дополнением к этому ответу.
mickmackusa
Кажется, это просто повторение существующего ответа .
Pang
Для записи: помните, что общее количество элементов включает таблицы и представления как объекты базы данных.
marcode_ely
1

Существует несколько способов подсчета таблиц базы данных. Мне больше всего нравится это:

SELECT
    COUNT(*)
FROM
    `information_schema`.`tables`
WHERE
    `table_schema` = 'my_database_name'
;
automatix
источник
1
select name, count(*) from DBS, TBLS 
where DBS.DB_ID = TBLS.DB_ID 
group by NAME into outfile '/tmp/QueryOut1.csv' 
fields terminated by ',' lines terminated by '\n';
Swamy
источник
Это не ответ на вопрос.
Майк,
1

из командной строки:

mysql -uroot -proot  -e "select count(*) from 
information_schema.tables where table_schema = 'database_name';"

в приведенном выше примере root - это имя пользователя и пароль, размещенные на localhost.

Раджив Сингх
источник
0
SELECT COUNT(*) FROM information_schema.tables
Shan
источник
это для всех таблиц в БД?
0

mysql> показать таблицы;

он покажет названия таблиц, а затем количество таблиц.

источник

Мохаммед Носират
источник
-1

Надеюсь, это поможет и вернет только количество таблиц в базе данных.

Use database;

SELECT COUNT(*) FROM sys.tables;
mjohnbatcha
источник
6
sys.tablesне существует вmysql
Гриша Вайнтрауб