logo图片
MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL 行计数

如何获取MySQL表中的行数?

行数表示 如何数据库中有很多记录。这是在开发和运营过程中查找和监视表增长的一项关键活动。 MySQL COUNT()函数是允许我们返回表中可用记录数的最简单且流行的函数。这是一个集合函数,它作用于整个记录集并产生单个汇总输出。
我们可以使用 MySQL COUNT()函数完成以下操作:
返回表中可用的记录数。 要通过查询或别名表返回行数。 获取列中非空值的计数。 获取列中不同或唯一值的计数。

语法:

以下是用于获取 MySQL :
SELECT COUNT (*)
FROM table_name
[WHERE conditions];
让我们看下面的表格进行演示:
表: 员工
MySQL ROW COUNT
表: 订单
MySQL ROW COUNT
例如,如果要获取 员工表中的总行数,则需要使用以下语法:
mysql> SELECT COUNT(*) AS Row_Count FROM employee;
我们应该得到如下屏幕截图所示的输出:
MySQL ROW COUNT

获取两个或多个表的MySQL行数

如果我们想获取两个或多个表的行数,则需要使用 子查询,即

示例

假设我们要获取 员工订单的行数表中的单个查询中,我们必须按以下方式执行查询:
mysql> SELECT 
    (SELECT COUNT(*) FROM employee) As Table1Count, 
    (SELECT COUNT(*) FROM orders) As Table2Count;
输出:
我们将得到如下输出结果:
MySQL ROW COUNT
我们还可以使用 UNION 运算符获取两个或多个表的行数,操作员将两个 SELECT查询返回的结果合并在一起:
mysql> SELECT 'employee' table_name1, COUNT(*) AS row1 FROM employee UNION SELECT 'orders' table_name2, COUNT(*) AS row2 FROM orders;
我们将得到如下输出:
MySQL ROW COUNT

获取特定数据库中所有表的MySQL行数

MySQL还允许我们获取特定数据库中所有表的行数。以下是帮助我们计算特定数据库中所有表的行数的步骤:
步骤1: 首先,我们需要在一个数据库。
步骤2: 其次,创建一个SQL语句,其中包含对UNION运算符分隔的所有表的计数查询。
步骤3: 最后,使用MySQL预处理语句执行查询。
要获取特定数据库表的所有表名,请从information_schema数据库中执行以下查询:
mysql> SELECT table_name FROM information_schema.tables
WHERE table_schema = 'testdb' AND table_type = 'BASE TABLE';
上述数据库具有以下表格:
MySQL ROW COUNT
接下来,构造SQL语句。在这里,我们将使用GROUP_CONCAT和CONCAT函数来构造语句:
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;
在上面的查询中,table_list是特定数据库中可用表的名称,该名称是第一步中使用的查询的结果。因此,上面的SQL查询变为:
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 = 'testdb' AND table_type = 'BASE TABLE') table_list;
如果您使用的是 MySQL版本 8.0或更高版本,则可以使用MySQL CTE(公用表表达式),而不是派生表:
WITH table_list AS (
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'testdb' 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;
第三,使用如下准备的语句执行@sql语句:
PREPARE stmt FROM  @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
执行上面的语句后,我们将得到如下输出:
MySQL ROW COUNT

通过单个查询获取数据库中所有表的MySQL行计数

MySQL还提供了查询以对特定数据库中所有表的行进行计数。最快的方法是直接从 information_schema 数据库查询数据。请参阅以下语句:
mysql> SELECT table_name, table_rows
    FROM information_schema.tables
    WHERE table_schema = 'testdb'
    ORDER BY table_name;
执行后,我们将得到如下结果:
MySQL ROW COUNT
有时此查询不会返回准确的结果。这是因为表中的实际行数和information_schema中的行数不同步。我们可以通过在从information_schema数据库中查询行数之前运行ANALYZE TABLE语句来避免这种不准确的结果。
mysql> ANALYZE TABLE table_name, ...;

昵称: 邮箱:
Copyright © 2020 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4