Respostas:
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName';
Isso é meu:
USE databasename;
SHOW TABLES;
SELECT FOUND_ROWS();
AND table_type = 'BASE TABLE'
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.
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 !!!
FROM
clá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
?
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbo' and TABLE_TYPE='BASE TABLE'
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;
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.
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'database_name';
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';
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.
Espero que isso ajude e retorne apenas o número de tabelas em um banco de dados
Use database;
SELECT COUNT(*) FROM sys.tables;
sys.tables
não existe emmysql
FOUND_ROWS()
foi maior que o número de tabelas que retornaram quando usei o primeiro método.