Consulta para contar la cantidad de tablas que tengo en MySQL

129

Estoy aumentando la cantidad de tablas que tengo y a veces tengo curiosidad por hacer una consulta rápida en la línea de comandos para contar la cantidad de tablas en mi base de datos. ¿Es eso posible? Si es así, ¿cuál es la consulta?

Genadinik
fuente

Respuestas:

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

Fuente

Esto es mío:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();
Joseadrian
fuente
He probado los 2 métodos anteriores y la cantidad de tablas que regresaron cuando usé FOUND_ROWS()fue mayor que la cantidad de tablas que regresaron cuando usé el primer método.
Amr
esto también cuenta las vistas, si solo quieres tablas, agregaAND table_type = 'BASE TABLE'
Thomasleveil
Solo una nota sobre el use databasename;comando. Si la base de datos es realmente grande, el comando puede ejecutarse con un largo tiempo de espera. En ese caso, el inicio de sesión debe hacerse con la opción -A, es decir:, mysql -uroot -p -Ay el comando funcionará rápidamente.
azurecorn
24

En caso de que desee contar todas las bases de datos más un resumen, intente esto:

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;

Aquí hay una muestra de ejecución:

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)

Darle una oportunidad !!!

RolandoMySQLDBA
fuente
1
Solo lo hice funcionar cuando usé solo la subconsulta. Hubo un error de sintaxis si intenté ejecutar toda la consulta / subconsulta.
Gaia
2
@Gaia Lo siento, olvidé que Base de datos era una palabra reservada. Entonces, rodeé la palabra con comillas dobles.
RolandoMySQLDBA
@RolandoMySQLDBA Esto es genial, ¿tiene uno para mostrar también el tamaño total de la base de datos de todas las bases de datos?
J. Scott Elblein
@ J.ScottElblein Pruebe mi publicación de DBA.SE: dba.stackexchange.com/questions/31801/…
RolandoMySQLDBA
¿Por qué la subconsulta en la FROMcláusula? ¿Por qué no solo 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
fuente
1
¡Esta debería ser la respuesta ya que no incluye vistas! +1
Testo Testini
4

Esto le dará los nombres y el recuento de tablas de todas las bases de datos en usted mysql

SELECT TABLE_SCHEMA,COUNT(*) FROM information_schema.tables group by TABLE_SCHEMA;
Rohit Dubey
fuente
3

Para contar el número de tablas solo haz esto:

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

A veces las cosas fáciles harán el trabajo.

jmm
fuente
Esto es exactamente lo que está en la respuesta aceptada agregada hace 5 años.
buena y única respuesta y la cosa es un comando muy fácil. perfecto
Ajay2707
3
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'database_name';
Arun Kasyakar
fuente
Esto se explica por sí mismo para aquellos que están familiarizados con esta consulta, pero para aquellos que no lo están, un poco de explicación sería un gran acompañamiento con esta respuesta.
mickmackusa
Esto parece ser solo una repetición de esta respuesta existente .
Pang
Para el registro: recuerde que el total de elementos incluye tablas y vistas como objetos de base de datos.
marcode_ely
1

Puede haber múltiples formas de contar las tablas de una base de datos. Mi favorito es esto en:

SELECT
    COUNT(*)
FROM
    `information_schema`.`tables`
WHERE
    `table_schema` = 'my_database_name'
;
automezcla
fuente
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
fuente
Esto no responde la pregunta.
Mike
1

desde la línea de comando:

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

en el ejemplo anterior, la raíz es nombre de usuario y contraseña, alojada en localhost.

Rajiv Singh
fuente
0
SELECT COUNT(*) FROM information_schema.tables
Shan
fuente
esto es para todas las tablas en DB?
0

mysql> mostrar tablas;

mostrará los nombres de las tablas, luego el recuento de tablas.

fuente

Mohammed Nosirat
fuente
-1

Espero que esto ayude, y devuelva solo el número de tablas en una base de datos

Use database;

SELECT COUNT(*) FROM sys.tables;
mjohnbatcha
fuente
66
sys.tablesno existe enmysql
Grisha Weintraub