Réponses:
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName';
C'est à moi:
USE databasename;
SHOW TABLES;
SELECT FOUND_ROWS();
AND table_type = 'BASE TABLE'
use databasename;
commande. Si la base de données est vraiment volumineuse, la commande peut s'exécuter avec un long temps d'attente. Dans ce cas, la connexion doit être effectuée avec l'option -A, c'est-à-dire:, mysql -uroot -p -A
et la commande fonctionnera rapidement.
Si vous souhaitez compter toutes les bases de données plus un résumé, essayez ceci:
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;
Voici un exemple d'exécution:
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)
Essaie !!!
FROM
clause? Pourquoi pas juste 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'
Cela vous donnera les noms et le nombre de tables de toutes les bases de données de votre mysql
SELECT TABLE_SCHEMA,COUNT(*) FROM information_schema.tables group by TABLE_SCHEMA;
Pour compter le nombre de tables, procédez comme suit:
USE your_db_name; -- set database
SHOW TABLES; -- tables lists
SELECT FOUND_ROWS(); -- number of tables
Parfois, des choses faciles feront le travail.
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'database_name';
depuis la ligne de commande:
mysql -uroot -proot -e "select count(*) from
information_schema.tables where table_schema = 'database_name';"
dans l'exemple ci-dessus, la racine est le nom d'utilisateur et le mot de passe, hébergés sur localhost.
J'espère que cela aide et ne renvoie que le nombre de tables dans une base de données
Use database;
SELECT COUNT(*) FROM sys.tables;
sys.tables
n'existe pas dansmysql
FOUND_ROWS()
était supérieur au nombre de tables renvoyées lorsque j'ai utilisé la première méthode.