MySQL 3无information_schema,求替代SELECT * FROM INFORMATION_SCHEMA.TABLES的查询
替代MySQL 3.x获取表信息的方案
嘿,刚好对MySQL 3.x这个古董版本有点经验,这就给你说几个能替代SELECT * FROM INFORMATION_SCHEMA.TABLES的实用方法:
1. 用SQL命令直接查询
MySQL 3.x虽然没有information_schema,但提供了专门的SHOW命令来获取表信息:
仅获取表名:如果只需要列出当前数据库下的所有非系统表名称,这个命令最直接(系统表比如mysql库下的内容不会显示,除非你主动切换到对应系统库):
SHOW TABLES;要是想指定某个数据库的表,不用切换库可以这么写:
SHOW TABLES FROM your_database_name;获取表的详细状态信息:这个命令返回的内容和
INFORMATION_SCHEMA.TABLES的核心字段对应,包括表引擎、行数、创建时间、数据大小等关键信息:SHOW TABLE STATUS;指定数据库的话:
SHOW TABLE STATUS FROM your_database_name;注意:这个命令返回的字段和新版本MySQL会有一些差异,比如没有
TABLE_SCHEMA字段,因为查询范围是你指定的单个数据库。
2. 用命令行工具mysqlshow
如果是在终端操作,还可以用MySQL自带的mysqlshow客户端工具,它能直接列出指定数据库的表,加上参数还能查看表状态:
- 列出指定库的所有表:
mysqlshow -u your_username -p your_database_name - 查看表的详细状态:
输入命令后会提示你输入密码,验证后就能看到结果。mysqlshow -u your_username -p --status your_database_name
补充说明
MySQL 3.x没有跨库查询所有表的统一SQL接口,所以如果要遍历所有数据库的表,得先执行SHOW DATABASES拿到所有库名,然后逐个切换库执行上面的SHOW TABLES或SHOW TABLE STATUS命令。
内容的提问来源于stack exchange,提问作者Joe kardin




