Zapytanie o policzenie liczby tabel, które mam w MySQL

131

Zwiększam liczbę posiadanych tabel i czasami jestem ciekaw, aby wykonać szybkie zapytanie w wierszu poleceń, aby policzyć liczbę tabel w mojej bazie danych. Czy to jest możliwe? Jeśli tak, jakie jest zapytanie?

Genadinik
źródło

Odpowiedzi:

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

Źródło

To jest moje:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();
Joseadrian
źródło
Wypróbowałem powyższe 2 metody, a liczba tabel, które powróciły, gdy użyłem, FOUND_ROWS()była większa niż liczba tabel, które powróciły, gdy użyłem pierwszej metody.
Amr
liczą się również wyświetlenia, jeśli chcesz tylko tabele, dodajAND table_type = 'BASE TABLE'
Thomasleveil
Tylko uwaga na temat use databasename;polecenia. Jeśli baza danych jest naprawdę duża, polecenie może zostać wykonane z długim czasem oczekiwania. W takim przypadku logowanie powinno odbywać się z opcją -A, czyli:, mysql -uroot -p -Aa polecenie będzie działać szybko.
azurecorn
24

Jeśli chcesz policzyć wszystkie bazy danych oraz podsumowanie, spróbuj tego:

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;

Oto przykładowy przebieg:

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)

Spróbuj !!!

RolandoMySQLDBA
źródło
1
Działało tylko wtedy, gdy korzystałem tylko z podzapytania. Wystąpił błąd składni, gdy próbowałem uruchomić całe zapytanie / podzapytanie.
Gaia
2
@Gaia Przepraszamy, zapomniałem, że baza danych to słowo zastrzeżone. Więc otoczyłem to słowo podwójnymi cudzysłowami.
RolandoMySQLDBA
@RolandoMySQLDBA To jest słodkie, czy masz również jeden, który pokazuje również całkowity rozmiar wszystkich db?
J. Scott Elblein,
@ J.ScottElblein Wypróbuj mój post DBA.SE: dba.stackexchange.com/questions/31801/…
RolandoMySQLDBA
Dlaczego podzapytanie w FROMklauzuli? Dlaczego nie po prostu 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
źródło
1
To powinna być odpowiedź, ponieważ nie obejmuje wyświetleń! +1
Testo Testini
4

To da ci nazwy i liczbę tabel wszystkich baz danych w tobie mysql

SELECT TABLE_SCHEMA,COUNT(*) FROM information_schema.tables group by TABLE_SCHEMA;
Rohit Dubey
źródło
3

Aby policzyć liczbę tabel po prostu zrób to:

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

Czasami proste rzeczy załatwią sprawę.

jmm
źródło
Dokładnie to jest w przyjętej odpowiedzi dodanej 5 lat temu.
dobra i niepowtarzalna odpowiedź, a sprawa jest bardzo prosta. doskonały
Ajay2707
3
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'database_name';
Arun Kasyakar
źródło
Jest to dość oczywiste dla tych, którzy są zaznajomieni z tym pytaniem, ale dla tych, którzy go nie znają, odrobina wyjaśnienia byłaby świetnym uzupełnieniem tej odpowiedzi.
mickmackusa,
Wydaje się, że to tylko powtórzenie tej istniejącej odpowiedzi .
Pang
Dla przypomnienia: pamiętaj, że total elementos obejmuje tabele i widoki jako obiekty bazy danych.
marcode_ely
1

Tabel w bazie danych można policzyć na wiele sposobów. Moim ulubionym jest ten na:

SELECT
    COUNT(*)
FROM
    `information_schema`.`tables`
WHERE
    `table_schema` = 'my_database_name'
;
automatix
źródło
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
źródło
To nie odpowiada na pytanie.
Mike
1

z linii poleceń:

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

w powyższym przykładzie root to nazwa użytkownika i hasło hostowane na hoście lokalnym.

Rajiv Singh
źródło
0
SELECT COUNT(*) FROM information_schema.tables
Shan
źródło
to jest dla wszystkich tabel w DB?
0

mysql> pokaż tabele;

pokaże nazwy tabel, a następnie liczbę w tabelach.

źródło

Mohammed Nosirat
źródło
-1

Mam nadzieję, że to pomoże i zwraca tylko liczbę tabel w bazie danych

Use database;

SELECT COUNT(*) FROM sys.tables;
mjohnbatcha
źródło
6
sys.tablesnie istnieje wmysql
Grisha Weintraub