Abfrage, um die Anzahl der Tabellen zu zählen, die ich in MySQL habe


129

Ich vergrößere die Anzahl meiner Tabellen und bin manchmal neugierig, nur eine kurze Befehlszeilenabfrage durchzuführen, um die Anzahl der Tabellen in meiner Datenbank zu zählen. Ist das möglich? Wenn ja, wie lautet die Abfrage?

Antworten:


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

Quelle

Das ist meins:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();

Ich habe die beiden oben genannten Methoden ausprobiert und die Anzahl der Tabellen, die bei Verwendung zurückgegeben wurden, FOUND_ROWS()war größer als die Anzahl der Tabellen, die bei Verwendung der ersten Methode zurückgegeben wurden.
Amr

Dies zählt auch Ansichten, wenn Sie nur Tabellen wollen, fügen Sie hinzuAND table_type = 'BASE TABLE'
Thomasleveil

Nur eine Anmerkung zum use databasename;Befehl. Wenn die Datenbank wirklich groß ist, kann der Befehl mit einer langen Wartezeit ausgeführt werden. In diesem Fall sollte die Anmeldung mit der Option -A erfolgen, dh: mysql -uroot -p -Aund der Befehl funktioniert schnell.
Azurecorn

24

Wenn Sie alle Datenbanken sowie eine Zusammenfassung zählen möchten, versuchen Sie Folgendes:

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;

Hier ist ein Probelauf:

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)

Versuche es !!!


1
Ich habe es nur zum Laufen gebracht, als ich nur die Unterabfrage verwendet habe. Beim Versuch, die gesamte Abfrage / Unterabfrage auszuführen, ist ein Syntaxfehler aufgetreten.
Gaia

2
@Gaia Sorry, ich habe vergessen, dass Database ein reserviertes Wort war. Also habe ich das Wort mit doppelten Anführungszeichen umgeben.
RolandoMySQLDBA

@RolandoMySQLDBA Das ist süß, haben Sie eine, die auch die Gesamtgröße der Datenbank aller Datenbanken anzeigt?
J. Scott Elblein

@ J.ScottElblein Versuchen Sie meinen DBA.SE-Beitrag: dba.stackexchange.com/questions/31801/…
RolandoMySQLDBA

Warum die Unterabfrage in der FROMKlausel? Warum nicht einfach 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
Dies sollte die Antwort sein, da keine Ansichten enthalten sind! +1
Testo Testini

4

Dies gibt Ihnen Namen und Tabellenanzahl aller Datenbanken in Ihrer MySQL

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

3

Um die Anzahl der Tabellen zu zählen, gehen Sie einfach wie folgt vor:

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

Manchmal erledigen einfache Dinge die Arbeit.


Dies ist genau das, was in der akzeptierten Antwort vor 5 Jahren hinzugefügt wurde.

gute und einzigartige Antwort und die Sache ist sehr einfach zu befehlen. perfekt
Ajay2707

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

Dies ist für diejenigen, die mit dieser Abfrage vertraut sind, ziemlich selbsterklärend, aber für diejenigen, die dies nicht tun, wäre eine kleine Erklärung eine gute Ergänzung zu dieser Antwort.
Mickmackusa

Dies scheint nur eine Wiederholung dieser bestehenden Antwort zu sein .
Pang

Für den Datensatz: Denken Sie daran, dass das gesamte Element Tabellen und Ansichten als Datenbankobjekte enthält.
marcode_ely

1

Es gibt mehrere Möglichkeiten, die Tabellen einer Datenbank zu zählen. Mein Favorit ist dies auf:

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

Dies beantwortet die Frage nicht.
Mike

1

von der Kommandozeile:

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

Im obigen Beispiel ist root Benutzername und Passwort, die auf localhost gehostet werden.


0
SELECT COUNT(*) FROM information_schema.tables

Dies ist für alle Tabellen in DBs?


-1

Ich hoffe, dies hilft und gibt nur die Anzahl der Tabellen in einer Datenbank zurück

Use database;

SELECT COUNT(*) FROM sys.tables;

6
sys.tablesexistiert nicht inmysql
Grisha Weintraub
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.