在 MySQL 中使用 SHOW TABLES 列出数据库中的表

本文介绍了在 MySQL 中如何使用 SHOW TABLES 语句列出指定数据库中的表。

有时候,您需要查询当前数据库中的所有的表,或者检查当前数据库中是否存在指定的表。

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 示例数据库的表。

  1. 使用 mysql 客户端工具连接到 MySQL 服务器:

    mysql -u root -p
    

    输入 root 帐户的密码并按 Enter

    Enter password: ********
    
  2. 直接运行下面的命令尝试列出所有的表:

    SHOW TABLES;
    

    此时,MySQL 会返回一个错误:ERROR 1046 (3D000): No database selected 。 因为您还未指定默认的数据库。

  3. 使用 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                       |
    +----------------------------+
  4. 使用 USE 命令设置默认的数据库:

    USE sakila;
    
  5. 直接运行下面的命令尝试列出所有的表:

    SHOW TABLES;
    

    此时, 此命令的输出和上面的命令 SHOW TABLES FROM sakila; 相同。这是因为此时的默认数据库是 sakila。我们不需要在 SHOW TABLES 中通过 FROM 指定数据库名。

  6. 通过下面的语句返回名字以 a 开头的表:

    SHOW TABLES LIKE 'a%';
    
    +-----------------------+
    | Tables_in_sakila (a%) |
    +-----------------------+
    | actor                 |
    | actor_copy            |
    | actor_info            |
    | address               |
    +-----------------------+

    这里模式 'a%' 会匹配以 a 开头且任意长度的字符串。

结论

在本文中,您学习了在 MySQL 中如何使用 SHOW TABLES 语句列出指定数据库中的表。