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?

Respostas:


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

Fonte

Isso é meu:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();

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 !!!


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'

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;

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.


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

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

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

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.


0
SELECT COUNT(*) FROM information_schema.tables

isso é para todas as tabelas nos bancos de dados?


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

6
sys.tablesnão existe emmysql
Grisha Weintraub
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.