Contagem de linhas do MySQL: como obter a contagem de linhas no MySQL

Resumo : neste tutorial, você aprenderá várias maneiras de obter a contagem de linhas do MySQL no banco de dados.

Obtendo a contagem de linhas do MySQL de uma única tabela

Para obter a contagem de linhas de uma única tabela, você usa a instrução COUNT(*)in SELECTda seguinte maneira:

SELECT 
    COUNT(*)
FROM
    table_name;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Por exemplo, para obter o número de linhas da customerstabela no banco de dados de amostra , use a seguinte instrução:

SELECT 
    COUNT(*)
FROM
    customers;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
+----------+
| COUNT(*) |
+----------+
|      122 |
+----------+
1 row in set (0.01 sec)Linguagem de código:  JavaScript  ( javascript )

Obtendo a contagem de linhas do MySQL de duas ou mais tabelas

Para obter a contagem de linhas de múltiplas tabelas, você usa o UNIONoperador para combinar conjuntos de resultados retornados por cada SELECTinstrução individual.

Por exemplo, para obter a contagem de linhas customerse orderstabelas em uma única consulta, use a instrução a seguir.

SELECT 
    'customers' tablename, 
     COUNT(*) rows
FROM
    customers 
UNION 
SELECT 
    'orders' tablename, 
     COUNT(*) rows
FROM
    orders;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
+-----------+------+
| tablename | rows |
+-----------+------+
| customers |  122 |
| orders    |  326 |
+-----------+------+
2 rows in set (0.01 sec)Linguagem de código:  JavaScript  ( javascript )

Obtendo a contagem de linhas do MySQL de todas as tabelas em um banco de dados específico

Para obter a contagem de linhas de todas as tabelas em um banco de dados específico, por exemplo, classicmodelsvocê usa as seguintes etapas:

  1. Primeiro, obtenha todos os nomes de tabelas no banco de dados
  2. Segundo, construa uma instrução SQL que inclua todas as SELECT COUNT(*) FROM table_nameinstruções de todas as tabelas separadas por UNION.
  3. Terceiro, execute a instrução SQL usando uma instrução preparada .

Primeiro, para obter todos os nomes de tabelas de um banco de dados, você consulta o information_schemabanco de dados da seguinte maneira:

SELECT 
    table_name
FROM
    information_schema.tables
WHERE
    table_schema = 'classicmodels'
        AND table_type = 'BASE TABLE';
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
+--------------+
| TABLE_NAME   |
+--------------+
| customers    |
| employees    |
| offices      |
| orderdetails |
| orders       |
| payments     |
| productlines |
| products     |
+--------------+
8 rows in set (0.02 sec)Linguagem de código:  JavaScript  ( javascript )

Segundo, para construir a instrução SQL, usamos as funções GROUP_CONCAT e CONCAT da seguinte forma:

SELECT 
    CONCAT(GROUP_CONCAT(CONCAT('SELECT \'',
                        table_name,
                        '\' table_name,COUNT(*) rows FROM ',
                        table_name)
                SEPARATOR ' UNION '),
            ' ORDER BY table_name')
INTO @sql 
FROM
    table_list;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta consulta, table_listhá uma lista de nomes de tabelas que é o resultado da consulta na primeira etapa.

A consulta a seguir usa a primeira consulta como uma tabela derivada e retorna uma instrução SQL como uma string.

SELECT 
    CONCAT(GROUP_CONCAT(CONCAT('SELECT \'',
                        table_name,
                        '\' table_name,COUNT(*) rows FROM ',
                        table_name)
                SEPARATOR ' UNION '),
            ' ORDER BY table_name')
INTO @sql 
FROM
    (SELECT 
        table_name
    FROM
        information_schema.tables
    WHERE
        table_schema = 'classicmodels'
            AND table_type = 'BASE TABLE') table_list
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Se você estiver usando MySQL 8.0+, poderá usar uma CTE (expressão de tabela comum) do MySQL em vez de uma tabela derivada:

WITH table_list AS (
SELECT
    table_name
  FROM information_schema.tables 
  WHERE table_schema = 'classicmodels' AND
        table_type = 'BASE TABLE'
) 
SELECT CONCAT(
            GROUP_CONCAT(CONCAT("SELECT '",table_name,"' table_name,COUNT(*) rows FROM ",table_name) SEPARATOR " UNION "),
            ' ORDER BY table_name'
        )
INTO @sql
FROM table_list; 
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, você executa a @sqlinstrução usando a  instrução preparada da seguinte forma:

PREPARE s FROM  @sql;
EXECUTE s;
DEALLOCATE PREPARE s;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
Exemplo de contagem de linhas do MySQL

Obtendo a contagem de linhas do MySQL de todas as tabelas em um banco de dados com uma consulta

Uma maneira rápida de obter a contagem de linhas de todas as tabelas em um banco de dados é consultar os dados information_schemadiretamente do banco de dados:

SELECT 
    table_name, 
    table_rows
FROM
    information_schema.tables
WHERE
    table_schema = 'classicmodels'
ORDER BY table_name;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
Contagem de linhas do MySQL

Às vezes, esse método não é preciso porque a contagem de linhas no information_schema e a contagem real de linhas nas tabelas não estão sincronizadas.

Para evitá-lo, você deve executar a ANALYZE TABLEinstrução antes de consultar a contagem de linhas do information_schemabanco de dados.

ANALYZE TABLE table_name, ...;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste tutorial, você aprendeu várias maneiras de obter a contagem de linhas de uma ou mais tabelas no banco de dados MySQL.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *