2009-08-15 6 views
0

La commande suivante me permettra de connaître les noms des bases de données.mysqlshow avec le nombre de tables

mysqlshow $

Mais comment puis-je savoir le nombre de tables dans chaque base de données ainsi que le nombre de tables vides? par exemple.

nombre db vide

essai 10 5

mydb 122 0

client 34 34

Répondre

2

Vous pouvez sélectionner le nombre (*) de INFORMATION_SCHEMA.TABLES priviliges sur elle.

select count(*) from information_schema.tables 
where table_schema = <My Schema> 
and table_type = 'BASE TABLE'; 

et filtre sur table_rows colonne pour yables vide:

select count(*) from information_schema.tables 
where table_schema = <My Schema> 
and table_type = 'BASE TABLE' 
and table_rows = 0; 
+0

Vous devez ajouter 'TABLE_TYPE' = 'BASE TABLE' à la clause where pour les deux instructions afin de supprimer les vues de votre compte – Scott

+0

Merci pour les informations supplémentaires. Ajouté aux requêtes, – Zed

0

Vous pouvez utiliser

SHOW TABLES; 

Pour obtenir les tables dans une base de données puis compte les lignes retournées.

Vous pouvez aussi le faire (même si elle peut être très lent): si vous avez

SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'my_database'; 
1
SHOW DATABASES; 
SHOW TABLES FROM --your_db_here--; 
SELECT COUNT(*) = 0 FROM --your_table_here--; 
1

il y a une base de données spéciale, information_schema qui contient des métadonnées sur toutes les bases de données sur le serveur MySQL.

SELECT `TABLE_NAME`, `TABLE_ROWS` 
FROM `information_schema`.`TABLES` 
WHERE `TABLE_SCHEMA` = 'NameOfDatabaseYouAreInterestedIn' 
AND `TABLE_TYPE` = 'BASE TABLE' 

TABLE_ROWS est pas toujours tout à fait exact, vous pouvez faire une boucle à travers les tables et obtenir un nombre

+0

Vous pouvez supprimer le TABLE_SCHEMA de la clause where si vous voulez des informations sur toutes les bases de données – Scott

0

Je ne sais pas si cela aide, mais il y a une possibilité de mysqlshow pour montrer le nombre de lignes par table (--count):

$mysqlshow --count *p* 
Wildcard: %p% 
+-------------+--------+--------------+ 
| Databases | Tables | Total Rows | 
+-------------+--------+--------------+ 
| implantacao |  25 |   134 | 
| pmsp  |  80 |  8561947 | 
| tmp   |  7 |   5 | 
+-------------+--------+--------------+ 
3 rows in set. 

Et si vous passez le nom de base de données:

$mysqlshow --count tmp 
Database: tmp 
+------------+----------+------------+ 
| Tables | Columns | Total Rows | 
+------------+----------+------------+ 
| builds  |  2 |   0 | 
| gtable  |  2 |   5 | 
| patterns |  9 |   0 | 
| products |  2 |   0 | 
| sig_types |  2 |   0 | 
| signatures |  2 |   0 | 
| versions |  2 |   0 | 
+------------+----------+------------+ 
7 rows in set. 

Vous pouvez ajouter le nom de table et obtenir des informations à ce sujet:

$mysqlshow tmp gtable 
Database: tmp Table: gtable 
+--------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+ 
| Field | Type | Collation   | Null | Key | Default | Extra | Privileges      | Comment | 
+--------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+ 
| symbol | text | latin1_swedish_ci | YES |  |   |  | select,insert,update,references |   | 
| size | int(11) |     | YES |  |   |  | select,insert,update,references |   | 
+--------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+ 

Regardez mysqlshow --help pour plus d'options/informations.

Questions connexes