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 SELECT
da 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 customers
tabela 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 UNION
operador para combinar conjuntos de resultados retornados por cada SELECT
instrução individual.
Por exemplo, para obter a contagem de linhas customers
e orders
tabelas 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, classicmodels
você usa as seguintes etapas:
- Primeiro, obtenha todos os nomes de tabelas no banco de dados
- Segundo, construa uma instrução SQL que inclua todas as
SELECT COUNT(*) FROM table_name
instruções de todas as tabelas separadas porUNION
. - 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_schema
banco 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_list
há 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 @sql
instruçã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 )
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_schema
diretamente 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 )
À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 TABLE
instrução antes de consultar a contagem de linhas do information_schema
banco 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.