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?

Genadinik
quelle

Antworten:

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

Quelle

Das ist meins:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();
Joseadrian
quelle
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 !!!

RolandoMySQLDBA
quelle
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'
Mukund
quelle
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;
Rohit Dubey
quelle
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.

jmm
quelle
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';
Arun Kasyakar
quelle
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'
;
automatix
quelle
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';
Swamy
quelle
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.

Rajiv Singh
quelle
0
SELECT COUNT(*) FROM information_schema.tables
Shan
quelle
Dies ist für alle Tabellen in DBs?
0

mysql> show tables;

Es werden die Namen der Tabellen und dann die Anzahl der Tabellen angezeigt.

Quelle

Mohammed Nosirat
quelle
-1

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

Use database;

SELECT COUNT(*) FROM sys.tables;
mjohnbatcha
quelle
6
sys.tablesexistiert nicht inmysql
Grisha Weintraub