Interogare pentru a număra numărul de tabele pe care le am în MySQL (Programare, Mysql)

Genadinik a intrebat.

Măresc numărul de tabele pe care le am și uneori sunt curios doar să fac o interogare rapidă în linie de comandă pentru a număra numărul de tabele din baza mea de date. Este posibil acest lucru? Dacă da, care este interogarea?

12 răspunsuri
Joseadrian
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName';

Sursa

Acesta este al meu:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();

Comentarii

  • Am încercat cele 2 metode de mai sus, iar numărul de tabele care s-au întors când am folosit FOUND_ROWS() a fost mai mare decât numărul de tabele care s-au întors când am folosit prima metodă. –  > Por Amr.
  • acest lucru contează și vizualizările, dacă doriți doar tabele, adăugați AND table_type = 'BASE TABLE' –  > Por Thomasleveil.
  • Doar o notă cu privire la use databasename; comandă. Dacă baza de date este foarte mare, comanda se poate executa cu un timp de așteptare lung. În acest caz, autentificarea ar trebui să se facă cu opțiunea -A, adică: mysql -uroot -p -A, , iar comanda va funcționa rapid. –  > Por azurecorn.
RolandoMySQLDBA

În cazul în care doriți o numărătoare a tuturor bazelor de date plus un rezumat, încercați acest lucru:

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;

Iată un exemplu de execuție:

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)

Încercați !!!

Comentarii

  • Am reușit să funcționeze doar atunci când am folosit doar subquery. A apărut o eroare de sintaxă dacă am încercat să execut întreaga interogare/subinterogare. –  > Por Gaia.
  • @Gaia Scuze, am uitat că Database este un cuvânt rezervat. Așa că am înconjurat cuvântul cu ghilimele duble. –  > Por RolandoMySQLDBA.
  • @RolandoMySQLDBA Este drăguț, aveți unul care să arate și dimensiunea totală a tuturor bazelor de date? –  > Por J. Scott Elblein.
  • @J.ScottElblein Încercați postul meu DBA.SE : dba.stackexchange.com/questions/31801/… –  > Por RolandoMySQLDBA.
  • De ce trebuie să fie folosită subîntrebarea din FROM clauză? De ce nu doar 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? –  > Por eggyal.
Mukund
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbo' and TABLE_TYPE='BASE TABLE'

Comentarii

  • Acesta ar trebui să fie răspunsul, deoarece nu include vizualizări! +1 –  > Por Testo Testini.
jmm

Pentru a număra numărul de tabele, trebuie doar să faceți acest lucru:

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

Uneori, lucrurile simple vor face treaba.

Comentarii

  • Este exact ceea ce se află în răspunsul acceptat, adăugat acum 5 ani. – user3559349
  • răspuns bun și unic și lucrul este foarte ușor de comandat. perfect –  > Por Ajay2707.
Rohit Dubey

Acest lucru vă va oferi numele și numărul de tabele ale tuturor bazelor de date din mysql-ul dvs.

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

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

Comentarii

  • Acest lucru este destul de auto-explicativ pentru cei care sunt familiarizați cu această interogare, dar pentru cei care nu sunt, un pic de explicație ar fi un acompaniament excelent cu acest răspuns. –  > Por mickmackusa.
  • Acesta pare a fi doar o repetare a acestui răspuns existent. –  > Por Pang.
  • Pentru înregistrare: Amintiți-vă că elementele totale includ Tabelele și Vizualizările ca obiecte ale bazei de date. –  > Por marcode_ely.
automatix

Pot exista mai multe moduri de a număra tabelele unei baze de date. Preferatul meu este acesta pe:

SELECT
    COUNT(*)
FROM
    `information_schema`.`tables`
WHERE
    `table_schema` = 'my_database_name'
;

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

Comentarii

  • Acest lucru nu răspunde la întrebare. –  > Por Mike.
Rajiv Singh

din linia de comandă :

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

în exemplul de mai sus root este numele de utilizator și parola , găzduit pe localhost.

Shan
SELECT COUNT(*) FROM information_schema.tables

Comentarii

  • acest lucru este pentru toate tabelele din BD-uri ? – user6830821
Mohammed Nosirat

mysql> arată tabelele;

va afișa numele tabelelor, apoi numărul de tabele.

sursa

mjohnbatcha

Sper că acest lucru vă ajută și returnează doar numărul de tabele dintr-o bază de date

Use database;

SELECT COUNT(*) FROM sys.tables;

Comentarii

  • sys.tables nu există în mysql –  > Por Grisha Weintraub.

Tags: