Consulta para contar o número de tabelas que tenho no MySQL

129

Estou aumentando o número de tabelas que tenho e às vezes tenho curiosidade apenas de fazer uma consulta rápida na linha de comando para contar o número de tabelas no meu banco de dados. Isso é possível? Em caso afirmativo, qual é a consulta?

Genadinik
fonte

Respostas:

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

Fonte

Isso é meu:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();
Joseadrian
fonte
Eu tentei os 2 métodos acima e o número de tabelas que retornaram quando usei FOUND_ROWS()foi maior que o número de tabelas que retornaram quando usei o primeiro método.
Amr
isso também conta visualizações, se você quiser apenas tabelas, adicione #AND table_type = 'BASE TABLE'
Thomasleveil 30/12/19
Apenas uma nota sobre o use databasename;comando. Se o banco de dados for realmente grande, o comando poderá ser executado com um longo tempo de espera. Nesse caso, o login deve ser feito com a opção -A, ou seja:: mysql -uroot -p -A, e o comando funcionará rapidamente.
azurecorn 21/07
24

Caso você queira contar todos os bancos de dados e um resumo, tente o seguinte:

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;

Aqui está uma amostra de execução:

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)

De uma chance !!!

RolandoMySQLDBA
fonte
1
Eu só consegui funcionar quando usei apenas a subconsulta. Ocorreu um erro de sintaxe se eu tentasse executar a consulta / subconsulta inteira.
Gaia
2
@ Gaia Desculpe, esqueci que o banco de dados era uma palavra reservada. Então, eu envolvi a palavra com aspas duplas.
RolandoMySQLDBA
@RolandoMySQLDBA Isso é legal, você tem um para mostrar também o tamanho total de todos os dbs?
J. Scott Elblein
@ J.ScottElblein Tente o meu post DBA.SE: dba.stackexchange.com/questions/31801/…
RolandoMySQLDBA
Por que a subconsulta na FROMcláusula? Por que não apenas 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 24/03
10
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbo' and TABLE_TYPE='BASE TABLE'
Mukund
fonte
1
Essa deve ser a resposta, pois não inclui visualizações! +1
Testo Testini 4/14
4

Isso fornecerá nomes e contagem de tabelas de todos os bancos de dados em seu mysql

SELECT TABLE_SCHEMA,COUNT(*) FROM information_schema.tables group by TABLE_SCHEMA;
Rohit Dubey
fonte
3

Para contar o número de tabelas, faça o seguinte:

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

Às vezes, coisas fáceis farão o trabalho.

jmm
fonte
É exatamente isso que está na resposta aceita adicionada há 5 anos.
resposta boa e única e o comando é muito fácil. aperfeiçoar
Ajay2707
3
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'database_name';
Arun Kasyakar
fonte
Isso é bastante auto-explicativo para aqueles que estão familiarizados com esta consulta, mas para aqueles que não o são, um pouco de explicação seria um ótimo acompanhamento para esta resposta.
Mkmackusa #
Isso parece ser apenas uma repetição dessa resposta existente .
Pang
Para o registro: Lembre-se de que o total de elementos inclui Tabelas e Exibições como objetos de Banco de Dados.
marcode_ely
1

Pode haver várias maneiras de contar as tabelas de um banco de dados. O meu favorito é este:

SELECT
    COUNT(*)
FROM
    `information_schema`.`tables`
WHERE
    `table_schema` = 'my_database_name'
;
automatix
fonte
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
fonte
Isso não responde à pergunta.
20516 Mike
1

da linha de comando:

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

no exemplo acima, root é nome de usuário e senha, hospedados no host local.

Rajiv Singh
fonte
0
SELECT COUNT(*) FROM information_schema.tables
Shan
fonte
isso é para todas as tabelas nos bancos de dados?
0

mysql> show tables;

mostrará os nomes das tabelas e a contagem nas tabelas.

fonte

Mohammed Nosirat
fonte
-1

Espero que isso ajude e retorne apenas o número de tabelas em um banco de dados

Use database;

SELECT COUNT(*) FROM sys.tables;
mjohnbatcha
fonte
6
sys.tablesnão existe emmysql
Grisha Weintraub