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?

Respuestas:


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

Fuente

Esto es mío:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();

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 !!!


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'

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;

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.


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

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

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

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.


0
SELECT COUNT(*) FROM information_schema.tables

esto es para todas las tablas en DB?


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

66
sys.tablesno existe enmysql
Grisha Weintraub
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.