有时候,您需要查询当前数据库中的所有的表,或者检查当前数据库中是否存在指定的表。
MySQL 提供了 SHOW TABLES 命令用来显示指定数据库中的表。
MySQL SHOW TABLES 语法
以下是 MySQL SHOW TABLES 命令的语法:
SHOW TABLES [FROM database_name] [LIKE pattern];
在这个语法中:
FROM database_name 指明了要从中列出表的数据库。它是可选的。如果未指定,则从默认数据库中获取。
LIKE pattern 用来过滤结果,返回符合条件的表的列表。
如果您还没有指定的默认的数据并且在 在 SHOW TABLES 命令中没有使用 FROM,则 MySQL 会返回一个错误:ERROR 1046 (3D000): No database selected 。
MySQL 显示表实例
以下实例显示如何列出 Sakila 示例数据库的表。
使用 mysql 客户端工具连接到 MySQL 服务器:
mysql -u root -p
输入 root 帐户的密码并按 Enter :
Enter password: ********
直接运行下面的命令尝试列出所有的表:
SHOW TABLES;
此时,MySQL 会返回一个错误:ERROR 1046 (3D000): No database selected 。 因为您还未指定默认的数据库。
使用 FROM 子句指定要从中获取表的数据库:
SHOW TABLES FROM sakila;
这里,通过 FROM 关键字指定了要列出数据库 sakila 中的所有的表。下面是输出:
+----------------------------+
| Tables_in_sakila |
+----------------------------+
| actor |
| actor_copy |
| actor_info |
| address |
| category |
| city |
| country |
| customer |
| customer_list |
| film |
| film_actor |
| film_category |
| film_list |
| film_text |
| inventory |
| language |
| nicer_but_slower_film_list |
| payment |
| rental |
| sales_by_film_category |
| sales_by_store |
| staff |
| staff_list |
| store |
| student |
| student_score |
| subscribers |
| test |
| user |
+----------------------------+
使用 USE 命令设置默认的数据库:
USE sakila;
直接运行下面的命令尝试列出所有的表:
SHOW TABLES;
此时, 此命令的输出和上面的命令 SHOW TABLES FROM sakila; 相同。这是因为此时的默认数据库是 sakila。我们不需要在 SHOW TABLES 中通过 FROM 指定数据库名。
通过下面的语句返回名字以 a 开头的表:
SHOW TABLES LIKE 'a%';
+-----------------------+
| Tables_in_sakila (a%) |
+-----------------------+
| actor |
| actor_copy |
| actor_info |
| address |
+-----------------------+
这里模式 'a%' 会匹配以 a 开头且任意长度的字符串。
结论
在本文中,您学习了在 MySQL 中如何使用 SHOW TABLES 语句列出指定数据库中的表。