134 votes

Requête pour compter le nombre de tables que j'ai dans MySQL

Je suis en train d'augmenter le nombre de mes tables et je suis parfois curieux de faire une requête rapide en ligne de commande pour compter le nombre de tables dans ma base de données. Cela est-il possible ? Si oui, quelle est cette requête ?

309voto

Joseadrian Points 1124
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName';

Source :

C'est le mien :

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();

0 votes

J'ai essayé les 2 méthodes ci-dessus et le nombre de tables retournées lorsque j'ai utilisé la méthode FOUND_ROWS() était supérieur au nombre de tables qui ont été retournées lorsque j'ai utilisé la première méthode.

0 votes

Cela compte aussi les vues, si vous ne voulez que des tableaux, ajoutez AND table_type = 'BASE TABLE'

0 votes

Juste une remarque sur le use databasename; commande. Si la base de données est très grande, la commande peut s'exécuter avec un long temps d'attente. Dans ce cas, la connexion doit être faite avec l'option -A, c'est-à-dire : mysql -uroot -p -A et la commande fonctionnera rapidement.

25voto

RolandoMySQLDBA Points 19439

Si vous souhaitez obtenir un compte de toutes les bases de données et 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)

Essayez-le ! !!

1 votes

Je n'ai réussi à le faire fonctionner que lorsque j'ai utilisé uniquement la sous-requête. Il y avait une erreur de syntaxe si j'essayais d'exécuter la requête/sous-requête entière.

2 votes

Désolé, j'ai oublié que Database était un mot réservé. J'ai donc entouré le mot de guillemets doubles.

0 votes

@RolandoMySQLDBA C'est génial, est-ce que vous en avez un qui montre aussi la taille totale de tous les db ?

10voto

Mukund Points 87
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbo' and TABLE_TYPE='BASE TABLE'

1 votes

Cela devrait être la réponse puisque cela n'inclut pas les vues ! +1

0voto

Shan Points 20
SELECT COUNT(*) FROM information_schema.tables

0 votes

Cela vaut-il pour toutes les tables de la base de données ?

-1voto

mjohnbatcha Points 9

J'espère que cela vous aidera, et ne renvoie que le nombre de tables dans une base de données.

Use database;

SELECT COUNT(*) FROM sys.tables;

6 votes

sys.tables n'existe pas dans mysql

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X