在mysql数据库的日常使用中,查看指定数据库下的所有表是基础且高频的操作,无论是开发阶段梳理表结构,还是运维阶段排查数据库问题,都需要用到相关方法。mysql本身提供了多种实现方式,适配不同的操作场景。

方法一:使用SHOW TABLES命令
SHOW TABLES是mysql内置的专门用于查看当前数据库下所有表的命令,语法简单,执行效率高,是最常用的方式。
操作步骤
首先需要切换到目标数据库,再执行SHOW TABLES命令,具体步骤如下:
- 登录mysql客户端,输入账号密码完成连接
- 使用
USE 数据库名命令切换到需要查看的数据库 - 执行
SHOW TABLES;命令即可看到该数据库下的所有表名
代码示例
-- 切换到test数据库 USE test; -- 查看test数据库下的所有表 SHOW TABLES;
如果需要查看其他数据库的所有表,不需要切换数据库,可以直接在SHOW TABLES后面加上FROM子句指定数据库名,示例如下:
-- 直接查看test数据库下的所有表,不需要提前切换数据库 SHOW TABLES FROM test;
方法二:查询information_schema系统库
information_schema是mysql自带的信息数据库,里面存储了所有其他数据库的元数据信息,包括表名、字段信息、索引信息等。通过查询这个库里的TABLES表,也可以获取指定数据库的所有表。
查询逻辑
information_schema.TABLES表中,TABLE_SCHEMA字段表示表所属的数据库名,TABLE_NAME字段表示表名,我们只需要筛选TABLE_SCHEMA等于目标数据库名的记录,就可以得到该数据库下的所有表。
代码示例
-- 查询test数据库下的所有表名 SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'test';
如果需要同时查看表的其他信息,比如表的存储引擎、创建时间等,可以额外选择对应的字段,示例如下:
-- 查询test数据库下所有表的表名、存储引擎、创建时间 SELECT TABLE_NAME, ENGINE, CREATE_TIME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'test';
两种方法的对比
两种方式都可以实现查看mysql数据库所有表的需求,适用场景有所不同,具体对比如下:
| 对比项 | SHOW TABLES命令 | 查询information_schema |
|---|---|---|
| 语法复杂度 | 简单,一行命令即可完成 | 需要写SELECT查询语句,语法稍复杂 |
| 可扩展性 | 只能查看表名,无法同时获取其他表属性 | 可以灵活选择需要查询的表属性,支持条件筛选 |
| 适用场景 | 快速查看表名,不需要额外信息时使用 | 需要同时获取表的存储引擎、创建时间等元数据时使用 |
注意事项
- 执行SHOW TABLES命令前,需要确保当前用户有对应数据库的查询权限,否则会提示无权限错误
- 查询information_schema时,数据库名需要用单引号包裹,避免因为数据库名包含特殊字符导致语法错误
- 如果数据库不存在,SHOW TABLES FROM 数据库名会返回空结果,查询information_schema也会返回空记录,不会报错
mysqlshow_tablesinformation_schema数据库表查询SQL语句修改时间:2026-07-13 14:27:22