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?
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:
SELECTIFNULL(table_schema,'Total') "Database",TableCount
FROM (SELECTCOUNT(1) TableCount,table_schema
FROM information_schema.tables
WHERE table_schema NOTIN ('information_schema','mysql')
GROUPBY table_schema WITHROLLUP) A;
Oto przykładowy przebieg:
mysql> SELECTIFNULL(table_schema,'Total') "Database",TableCount
-> FROM (SELECTCOUNT(1) TableCount,table_schema
-> FROM information_schema.tables
-> WHERE table_schema NOTIN ('information_schema','mysql')
-> GROUPBY table_schema WITHROLLUP) A;
+--------------------+------------+
| Database | TableCount |
+--------------------+------------+
| performance_schema | 17 |
| Total | 17 |
+--------------------+------------+
2 rows in set (0.29 sec)
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
SELECTCOUNT(*) FROM information_schema.tables WHERE table_schema = 'dbo'and TABLE_TYPE='BASE TABLE'
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.
FOUND_ROWS()
była większa niż liczba tabel, które powróciły, gdy użyłem pierwszej metody.AND table_type = 'BASE TABLE'
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 -A
a polecenie będzie działać szybko.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 !!!
źródło
FROM
klauzuli? Dlaczego nie po prostuSELECT 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
?SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbo' and TABLE_TYPE='BASE TABLE'
źródło
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;
źródło
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ę.
źródło
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'database_name';
źródło
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' ;
źródło
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';
źródło
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.
źródło
SELECT COUNT(*) FROM information_schema.tables
źródło
pokaże nazwy tabel, a następnie liczbę w tabelach.
źródło
źródło
Mam nadzieję, że to pomoże i zwraca tylko liczbę tabel w bazie danych
Use database; SELECT COUNT(*) FROM sys.tables;
źródło
sys.tables
nie istnieje wmysql