MySQL获取数据库内所有表格数据总数

在 MySQL 中,要获取数据库内所有表格的数据总数,可以编写一个查询脚本来遍历每个表并计算其行数。你可以使用 INFORMATION_SCHEMA 数据库,它包含了关于数据库元数据的表格,如 TABLESCOLUMNS

以下是一个示例脚本,展示了如何使用 SQL 查询和存储过程来获取所有表格的数据总数:

使用 SQL 查询和脚本

  1. 查询所有表的行数(直接方法,适合命令行工具)

如果你只是临时需要这些信息,并且你的数据库表数量不多,可以直接在命令行工具中运行以下查询:

SELECT table_name AS 'Table',table_rows AS 'Rows'
FROM information_schema.tables
WHERE table_schema = 'your_database_name'AND table_type = 'BASE TABLE';

your_database_name 替换为你的实际数据库名称。table_rows 列提供了每个表的行数估算值(对于 InnoDB 表,这可能是一个估算值,而不是精确值)。

  1. 使用存储过程(适合更复杂的场景)

如果你只想获取所有表的总行数,可以使用以下查询:

SELECT SUM(table_rows) 
FROM information_schema.tables 
WHERE table_schema = 'your_database_name';

这将返回数据库中所有表的行数总和。

  1. 使用存储过程(适合更复杂的场景)

如果你需要更灵活或者更复杂的处理,可以创建一个存储过程来遍历所有表并计算其行数。以下是一个示例存储过程:

DELIMITER //  -- 设置新的语句结束符为"//",以便在存储过程中使用";"而不结束整个存储过程的定义。CREATE PROCEDURE CountAllTableRows()  -- 创建一个名为CountAllTableRows的存储过程。
BEGIN-- 变量声明部分DECLARE done INT DEFAULT FALSE;  -- 声明一个名为done的整型变量,用于标记游标是否读取完毕,初始值为FALSE。DECLARE tbl_name VARCHAR(255);    -- 声明一个名为tbl_name的字符串变量,用于存储当前处理的表名。DECLARE row_count INT DEFAULT 0;  -- 声明一个名为row_count的整型变量,用于临时存储行数(但在这个过程中并未使用到)。-- 游标声明部分DECLARE cur CURSOR FOR  -- 声明一个名为cur的游标。SELECT table_name   -- 游标查询的SQL语句,从information_schema.tables中选择表名。FROM information_schema.tables WHERE table_schema = 'your_database_name'  -- 限定查询的数据库名(需要替换为实际的数据库名)。AND table_type = 'BASE TABLE';  -- 只选择基本表(排除视图等)。-- 继续处理游标结束时的处理器DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;  -- 当游标读取不到数据时,设置done为TRUE。-- 临时表声明部分CREATE TEMPORARY TABLE IF NOT EXISTS temp_row_counts (  -- 创建一个名为temp_row_counts的临时表(如果不存在)。table_name VARCHAR(255),  -- 存储表名。row_count BIGINT  -- 存储行数,使用BIGINT以支持大表。);-- 打开游标OPEN cur;-- 读取循环read_loop: LOOP  -- 定义一个名为read_loop的循环。FETCH cur INTO tbl_name;  -- 从游标中读取一个表名到tbl_name变量。IF done THEN  -- 判断是否读取完毕。LEAVE read_loop;  -- 如果读取完毕,则离开循环。END IF;-- 获取当前表的行数SET @s = CONCAT('SELECT COUNT(*) INTO @cnt FROM ', tbl_name);  -- 拼接动态SQL语句。PREPARE stmt FROM @s;  -- 准备执行动态SQL语句。EXECUTE stmt;  -- 执行动态SQL语句,结果存储在@cnt变量中。DEALLOCATE PREPARE stmt;  -- 释放动态SQL语句。-- 将行数插入临时表INSERT INTO temp_row_counts (table_name, row_count) VALUES (tbl_name, @cnt);  -- 将表名和行数插入临时表。END LOOP;-- 关闭游标CLOSE cur;-- 从临时表中选择结果SELECT * FROM temp_row_counts;  -- 查询并显示临时表中的所有记录。-- 删除临时表DROP TEMPORARY TABLE IF EXISTS temp_row_counts;  -- 删除临时表(如果存在)。
END //  -- 存储过程定义结束。DELIMITER ;  -- 将语句结束符重置为默认的";"。

然后,你可以通过调用存储过程来获取所有表的行数:

CALL CountAllTableRows();

注意事项:

  1. 在实际使用存储过程之前,需要将 ‘your_database_name’ 替换为实际的数据库名称。
  2. 存储过程中使用了动态SQL(通过 PREPARE 和 EXECUTE 语句),这是因为在存储过程中直接执行包含变量作为表名的SQL语句是不被允许的。
  3. 临时表 temp_row_counts 用于存储每个表的行数,以便在存储过程结束时能够一次性查询并显示所有结果。
  4. 使用 BIGINT 类型来存储行数,以支持可能非常大的表。

敲黑板

  1. 性能:对于非常大的数据库,这些方法可能非常耗时和占用资源。
  2. 估算值:对于 InnoDB 表,table_rows 列可能是一个估算值,而不是精确值。如果需要精确值,必须执行 COUNT(*) 查询。
  3. 权限:确保你的数据库用户有足够的权限访问 INFORMATION_SCHEMA 并执行所需的查询。

通过上述方法,你可以轻松获取 MySQL 数据库中所有表格的数据总数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何利用 Puppeteer 的 Evaluate 函数操作网页数据

介绍 在现代的爬虫技术中,Puppeteer 因其强大的功能和灵活性而备受青睐。Puppeteer 是一个用于控制 Chromium 或 Chrome 浏览器的 Node.js 库,提供了丰富的 API 接口,能够帮助开发者高效地处理动态网页数据。本文将重点讲解 Puppeteer 的 ev…

开发工具 - VSCode 快捷键

以下是一些常用的 VS Code 快捷键(Windows、macOS 和 Linux 均适用,略有不同): 常用快捷键 功能Windows/LinuxmacOS打开命令面板Ctrl Shift P 或 F1Cmd Shift P打开文件Ctrl OCmd O保存文件Ctrl SCmd S全部保存Ctrl K,…

【Leetcode 每日一题】146. LRU 缓存(c++)

146. LRU 缓存 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值&#x…

【GAMES101笔记速查——Lecture 19 Cameras,Lenses and Light Fields】

本章节内容:相机、棱镜、光场 计算机图形学的两种成像方法: 1.合成方法:光栅化、光线追踪(展示出现实没有的东西) 2.捕捉方法:相机(捕捉现实已有的东西) 目录 1 相机 1.1 针孔相…

pytorch经典训练流程

文章目录 [toc]1. **经典训练流程和任务:监督学习****1.1 什么是监督学习?****1.2 为什么要设计训练流程?****1.3 怎么设计训练流程?****代码示例:监督学习的典型流程** 2. **超参数设置****2.1 什么是超参数&#xff…

241124学习日志——[CSDIY] [ByteDance] 后端训练营 [14]

CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!&…

001 MATLAB介绍

前言: 软件获取渠道有很多,难点也就是百度网盘下载慢; 线上版本每月有时间限制。 01 MATLAB介绍 性质: MATLAB即Matrix Laboratory 矩阵实验室的意思,是功能强大的计算机高级语言, 已广泛应用于各学科研究部门、…

【C语言】传值调用与传址调用:深度解析与实现

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯什么是传值调用和传址调用?1. 传值调用(Call by Value)2. 传址调用(Call by Reference) 💯传值调…

科技赋能健康:多商户Java版商城系统引领亚健康服务数字化变革

在当今社会,随着生活节奏的加快和工作压力的增大,越来越多的人处于亚健康状态。据《The Lancet》期刊2023年的统计数据显示,全球亚健康状态的人群比例已高达82.8%,这一数字背后,隐藏着巨大的健康风险和社会成本。亚健康…

docker 卸载与安装

卸载 查询之前安装的docker, 没有查到则不用卸载删除 yum list installed | grep docker 卸载安装包 yum remove docker-* -y 删除镜像、容器、默认挂载卷 rm -rf /var/lib/docker 安装 -ce 安装稳定版本 -y 当安装过程提示选择全部为 "yes" yum install d…

vue实现列表滑动下拉加载数据

一、实现效果 二、实现思路 使用滚动事件监听器来检测用户是否滚动到底部&#xff0c;然后加载更多数据 监听滚动事件。检测用户是否滚动到底部。加载更多数据。 三、案例代码 <div class"drawer-content"><div ref"loadMoreTrigger" class&q…

【CSP CCF记录】201809-2第14次认证 买菜

题目 样例输入 4 1 3 5 6 9 13 14 15 2 4 5 7 10 11 13 14 样例输出 3 思路 易错点&#xff1a;仅考虑所给样例&#xff0c;会误以为H和W两人的装车时间是一一对应的&#xff0c;那么提交结果的运行错误就会让你瞬间清醒。 本题关键是认识到H和W的装车时间不一定一一对应&…

学习threejs,使用设置bumpMap凹凸贴图创建褶皱,实现贴图厚度效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshPhongMaterial高…

GoF设计模式——结构型设计模式分析与应用

文章目录 UML图的结构主要表现为&#xff1a;继承&#xff08;抽象&#xff09;、关联 、组合或聚合 的三种关系。1. 继承&#xff08;抽象&#xff0c;泛化关系&#xff09;2. 关联3. 组合/聚合各种可能的配合&#xff1a;1. 关联后抽象2. 关联的集合3. 组合接口4. 递归聚合接…

Unity中动态生成贴图并保存成png图片实现

实现原理&#xff1a; 要生成长x宽y的贴图&#xff0c;就是生成x*y个像素填充到贴图中&#xff0c;如下图&#xff1a; 如果要改变局部颜色&#xff0c;就是从x1到x2(x1<x2),y1到y2(y1<y2)这个范围做处理&#xff0c; 或者要想做圆形就是计算距某个点&#xff08;x1,y1&…

【C51】单片机与LED数码管的动态显示接口案例分析

当显示位数较多时&#xff0c;静态显示所需的I/O口太多&#xff0c;这时常采用动态显示方式。动态显示方式是将所以LED数码管的段码端的相应段并接在一起&#xff0c;由一个8位I/O口控制&#xff0c;而各位显示位的公共端分别由I/O线控制&#xff0c;称为位选端。 需求&#x…

互联网直播/点播EasyDSS视频推拉流平台视频点播有哪些技术特点?

在数字化时代&#xff0c;视频点播应用已经成为我们生活中不可或缺的一部分。监控技术与视频点播的结合正悄然改变着我们获取和享受媒体内容的方式。这一变革不仅体现在技术层面的进步&#xff0c;更深刻地影响了我们。 EasyDSS视频直播点播平台是一款高性能流媒体服务软件。E…

1语言基础

数据结构与算法可以说是每位程序员的必修课&#xff0c;即使是AI高速发展的今天&#xff0c;熟悉数据结构与算法都无疑是面向开发的一项加分项。先从一个问题看起&#xff1a; # 怎么让后面不带空格 print("11",11) # 11 2方案可能有更多&#xff0c;就像一个问题&am…

Redis 可观测最佳实践

Redis 介绍 Redis 是一个开源的高性能键值对&#xff08;key-value&#xff09;数据库。它通常用作数据库、缓存和消息代理。Redis 支持多种类型的数据结构&#xff0c;Redis 通常用于需要快速访问的场景&#xff0c;如会话缓存、全页缓存、排行榜、实时分析等。由于其高性能和…

【前端】JavaScript 变量声明和函数声明的提升机制:深入探讨提升优先级与其行为

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;提升&#xff08;Hoisting&#xff09;概述&#x1f4af;提升机制——函数声明 vs 变量声明&#x1f4af;代码示例&#xff1a;函数与 var 的提升提升后的代码解析分析 …