mysql怎么查询所有表行数

   2024-09-30 7880
核心提示:要查询MySQL中所有表的行数,可以使用以下方法:使用information_schema数据库:information_schema是一个包含MySQL服务器元数据

要查询MySQL中所有表的行数,可以使用以下方法:

使用information_schema数据库:

information_schema是一个包含MySQL服务器元数据(例如数据库名、表名、列名等)的数据库。可以通过查询information_schema.TABLES表来获取所有表的行数。

以下是查询所有表行数的SQL语句:

SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_ROWSFROM information_schema.TABLESWHERE TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema')ORDER BY TABLE_ROWS DESC;

这条SQL语句会返回一个结果集,其中包含了数据库名(TABLE_SCHEMA)、表名(TABLE_NAME)和表的行数(TABLE_ROWS)。

注意:information_schema.TABLES表中的TABLE_ROWS列只是一个估计值,可能不是精确的行数。如果需要精确的行数,可以使用SELECT COUNT(*) FROM table_name来查询每个表的行数。

遍历所有表并查询行数:

可以编写一个脚本或存储过程来遍历所有表并查询每个表的行数。以下是一个使用存储过程的示例:

DELIMITER //CREATE PROCEDURE GetAllTableRowCounts()BEGIN    DECLARE done INT DEFAULT 0;    DECLARE tableName CHAR(64);    DECLARE rowCount BIGINT;    DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = DATABASE();    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;    CREATE TEMPORARY TABLE tempRowCounts (tableName CHAR(64), rowCount BIGINT);    OPEN cur;    read_loop: LOOP        FETCH cur INTO tableName;        IF done THEN            LEAVE read_loop;        END IF;        SET @sql = CONCAT('SELECT COUNT(*) INTO @rowCount FROM ', tableName);        PREPARE stmt FROM @sql;        EXECUTE stmt;        DEALLOCATE PREPARE stmt;        INSERT INTO tempRowCounts VALUES (tableName, @rowCount);    END LOOP;    CLOSE cur;    SELECT * FROM tempRowCounts ORDER BY rowCount DESC;    DROP TEMPORARY TABLE tempRowCounts;END //DELIMITER ;

运行上述存储过程后,可以调用GetAllTableRowCounts()来查询所有表的行数:

CALL GetAllTableRowCounts();

这将返回一个结果集,其中包含了表名(tableName)和表的行数(rowCount)。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号