show tables获得的表名结果怎样用于其他查询语句,类似子查询那样?

seai 2010-06-18 02:02:52
或者有没有其他办法实现:

目的是为了获取所有表名,并为每个表执行select count(*) from <tbl_name>;统计所有表的记录。
...全文
762 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangping_meng 2011-03-04
  • 打赏
  • 举报
回复
SELECT table_name,table_rows FROM information_schema.TABLES WHERE table_schema=DB_NAME;
ACMAIN_CHM 2010-06-18
  • 打赏
  • 举报
回复
[Quote]除了使用存储过程,mysql有类似pl/sql语句块的概念吗?[/Quote]目前的MYSQL版本中没有。只能在存储过程中实现。
WWWWA 2010-06-18
  • 打赏
  • 举报
回复
mysql没有匿名块,只有用SP
seai 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zuoxingyu 的回复:]

下面是我写的一个用来清理所有表的测试记录的存储过程,参数是数据库名称。
你可以改造一下,把DELETE FROM改成SELECT COUNT(*),然后把查出来的写到一个临时表里,最后再SELECT出来。这样这个存储过程就实现了你要的功能了。

SQL code

CREATE PROCEDURE Clear_DB(
DB_NAME varchar(50) #……
[/Quote]


除了使用存储过程,mysql有类似pl/sql语句块的概念吗?
zuoxingyu 2010-06-18
  • 打赏
  • 举报
回复
用程序来拼SQL,挺好。
iihero_ 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 seai 的回复:]

不错,顶了。

不过mysql4里不能使用“SELECT table_name FROM information_schema.TABLES”,除了通过程序来完成,有变通的方法实现:获取库中所有表的记录数吗?
[/Quote]
没有。 
seai 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zuoxingyu 的回复:]

下面是我写的一个用来清理所有表的测试记录的存储过程,参数是数据库名称。
你可以改造一下,把DELETE FROM改成SELECT COUNT(*),然后把查出来的写到一个临时表里,最后再SELECT出来。这样这个存储过程就实现了你要的功能了。

SQL code

CREATE PROCEDURE Clear_DB(
DB_NAME varchar(50) #……
[/Quote]


不错,顶了。

不过mysql4里不能使用“SELECT table_name FROM information_schema.TABLES”,除了通过程序来完成,有变通的方法实现:获取库中所有表的记录数吗?
wwwwb 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 seai 的回复:]
我说的不是程序,是纯粹数据库的方式,比如tsql语句等,mysql也有相应的语句吧。
[/Quote]

没有,在MYSQL中,只有用SP ,取得所有表名,打开游标,生成SQL语句,再动态执行
zuoxingyu 2010-06-18
  • 打赏
  • 举报
回复
下面是我写的一个用来清理所有表的测试记录的存储过程,参数是数据库名称。
你可以改造一下,把DELETE FROM改成SELECT COUNT(*),然后把查出来的写到一个临时表里,最后再SELECT出来。这样这个存储过程就实现了你要的功能了。


CREATE PROCEDURE Clear_DB(
DB_NAME varchar(50) # 数据库名称
)
BEGIN
DECLARE done INT DEFAULT 0; #游标的标志位
DECLARE a varchar(20);
DECLARE b varchar(20);
DECLARE cur1 CURSOR FOR SELECT table_name FROM information_schema.TABLES WHERE table_schema=DB_NAME ;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

OPEN cur1;
REPEAT
FETCH cur1 INTO a;
IF NOT done THEN
set b=concat('Delete from ',DB_NAME,'.',a); # 拼删除命令
# set b=concat('TRUNCATE from ',DB_NAME,'.',a); # 拼删除命令
SET @E=b;
PREPARE stmt1 FROM @E;
EXECUTE stmt1; # 执行命令
DEALLOCATE PREPARE stmt1; #释放对象
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
END;


ACMAIN_CHM 2010-06-18
  • 打赏
  • 举报
回复
SQL语句在MYSQL中无法实现,在MYSQL也只能通过存储过程来实现。

MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
seai 2010-06-18
  • 打赏
  • 举报
回复
我说的不是程序,是纯粹数据库的方式,比如tsql语句等,mysql也有相应的语句吧。
ACMAIN_CHM 2010-06-18
  • 打赏
  • 举报
回复
在你程序中可以直接处理 show tables ; 返回的结果集啊,就象处理 select * from xxx 一样,然后你再遍历这个 show tables 结果集。
通过慢sql分析的学习,了解什么是慢sql,以及慢SQL会引起那些性能问题。清楚慢sql日志的设置,然后再通过慢sql分析工具的学习,清楚慢sql分析的步骤和流程。慢sql分析工具:mysqldumpslow工具、explain工具、profile工具、Optimizer Trace工具。 提供课程中所使用的sql语句。 课程内容:第一章:课程简介1、课程介绍2、课程大纲 第二章:慢sql简介1、慢sql简介2、慢sql会引起的问题 第三章:慢日志的设置1、慢sql的分析流程2、慢日志参数理解3、慢日志参数设置:第1种方式:my.ini文件设置4、慢日志参数设置:第2种方式:sql脚本设置5、慢日志参数设置-效果验证 第四章:如何发现慢sql1、如何发现慢sql:第1种方式:慢日志文件2、如何发现慢sql:第2种方式:mysql库的slow_log表 第五章:慢sql分析工具1、慢sql提取-mysqldumpslow工具-使用方法2、慢sql提取-mysqldumpslow工具-操作实战3、慢sql的执行计划分析-explain分析-执行计划结果说明4、慢sql的执行计划分析-explain分析-索引介绍+type类型举例5、慢sql的资源开销分析-profile分析-分析步骤6、慢sql的资源开销分析-profile分析-show profile执行阶段说明7、慢sql的资源开销分析-profile分析-完整列表说明+操作实战8、慢sql的跟踪分析-Optimizer Trace分析-分析步骤9、慢sql的跟踪分析-Optimizer Trace表的介绍10、索引失效场景举例 第六章:慢日志清理1、慢日志清理

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧