Cerca di contare il numero di tabelle che ho in MySQL


129

Sto aumentando il numero di tabelle che ho e a volte sono curioso solo di fare una veloce query da riga di comando per contare il numero di tabelle nel mio database. È possibile? In tal caso, qual è la query?

Risposte:


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

fonte

Questo è mio:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();

Ho provato i 2 metodi precedenti e il numero di tabelle restituite quando l'ho utilizzato FOUND_ROWS()era maggiore del numero di tabelle restituite quando utilizzavo il primo metodo.
— Amr

questo conta anche le viste, se vuoi solo tabelle, aggiungiAND table_type = 'BASE TABLE'
— Thomasleveil il

Solo una nota sul use databasename;comando. Se il database è molto grande, il comando può essere eseguito con un lungo tempo di attesa. In tal caso, il login dovrebbe essere fatto con l'opzione -A, cioè:, mysql -uroot -p -Ae il comando funzionerà velocemente.
— Azurecorn,

24

Nel caso in cui desideri un conteggio di tutti i database più un riepilogo, prova questo:

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;

Ecco un esempio:

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)

Provaci !!!


1
Ho funzionato solo quando ho usato solo la subquery. Si è verificato un errore di sintassi se ho provato a eseguire l'intera query / sottoquery.
— Gaia,

2
@Gaia Siamo spiacenti, ho dimenticato che Database era una parola riservata. Quindi, ho circondato la parola con virgolette doppie.
— RolandoMySQLDBA,

@RolandoMySQLDBA Questo è dolce, ne hai uno per mostrare anche la dimensione totale del db di tutti i db?
— J. Scott Elblein,

@ J.ScottElblein Prova il mio post DBA.SE: dba.stackexchange.com/questions/31801/…
— RolandoMySQLDBA

Perché la subquery nella FROMclausola? Perché non solo 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

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

1
Questa dovrebbe essere la risposta poiché non include le visualizzazioni! +1
— Testo Testini,

4

Questo ti darà nomi e conteggio delle tabelle di tutti i database in te mysql

SELECT TABLE_SCHEMA,COUNT(*) FROM information_schema.tables group by TABLE_SCHEMA;

3

Per contare il numero di tabelle basta fare questo:

USE your_db_name;    -- set database
SHOW TABLES;         -- tables lists
SELECT FOUND_ROWS(); -- number of tables

A volte le cose facili faranno il lavoro.


Questo è esattamente ciò che è nella risposta accettata aggiunta 5 anni fa.

risposta buona e unica e il comando è molto semplice. perfetto
— Ajay2707 il

3
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'database_name';

Questo è abbastanza autoesplicativo per coloro che hanno familiarità con questa query, ma per quelli che non lo sono, un po 'di spiegazione sarebbe un ottimo accompagnamento con questa risposta.
— Mickmackusa,

Questa sembra essere solo una ripetizione di questa risposta esistente .
— Pang

Per la cronaca: Ricorda che elementos totale include Tabelle e Viste come oggetti Database.
— marcode_ely,

1

Esistono diversi modi per contare le tabelle di un database. Il mio preferito è questo su:

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

Questo non risponde alla domanda.
— Mike,

1

dalla riga di comando:

mysql -uroot -proot  -e "select count(*) from 
information_schema.tables where table_schema = 'database_name';"

nell'esempio sopra root è username e password, ospitati su localhost.


0
SELECT COUNT(*) FROM information_schema.tables

questo è per tutte le tabelle nei DB?


-1

Spero che questo aiuti e ritorni solo il numero di tabelle in un database

Use database;

SELECT COUNT(*) FROM sys.tables;

6
sys.tablesnon esiste inmysql
— Grisha Weintraub il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.