在本教程中,您将学习如何使用MySQL SHOW TABLES
命令查询特定数据库中的表。
要在MySQL数据库中列出所有表,请按照下列步骤操作:
使用MySQL客户端(如mysql
)登录到MySQL数据库服务器
下面说明了MySQL SHOW TABLES
命令的语法:
MySQL SHOW TABLES示例
以下示例说明如何列出yiibaidb
数据库中的所有表。
步骤1 - 连接到MySQL数据库服务器:
Copy C:\Users\Administrator > mysql - u root - p
步骤2 -切换到yiibaidb
数据库:
Copy mysql > USE yiibaidb;
Database changed
步骤3 - 显示yiibaidb
数据库中的所有表:
Copy mysql > show tables;
+ --------------------+
| Tables_in_yiibaidb |
+ --------------------+
| aboveavgproducts |
| article_tags |
| bigsalesorder |
| contacts |
| customerorders |
| customers |
| departments |
| employees |
| employees_audit |
| officeinfo |
| offices |
| offices_bk |
| offices_usa |
| orderdetails |
| orders |
| organization |
| payments |
| price_logs |
| productlines |
| products |
| saleperorder |
| user_change_logs |
| v_contacts |
| vps |
+ --------------------+
24 rows in set
SHOW TABLES
命令可显示表是基表还是视图。 要在结果中包含表类型,请使用SHOW TABLES
语句,如下所示 -
执行上面语句,如下所示 -
Copy mysql > SHOW FULL TABLES;
+ --------------------+------------+
| Tables_in_yiibaidb | Table_type |
+ --------------------+------------+
| aboveavgproducts | VIEW |
| article_tags | BASE TABLE |
| bigsalesorder | VIEW |
| contacts | BASE TABLE |
| customerorders | VIEW |
| customers | BASE TABLE |
| departments | BASE TABLE |
| employees | BASE TABLE |
| employees_audit | BASE TABLE |
| officeinfo | VIEW |
| offices | BASE TABLE |
| offices_bk | BASE TABLE |
| offices_usa | BASE TABLE |
| orderdetails | BASE TABLE |
| orders | BASE TABLE |
| organization | VIEW |
| payments | BASE TABLE |
| price_logs | BASE TABLE |
| productlines | BASE TABLE |
| products | BASE TABLE |
| saleperorder | VIEW |
| user_change_logs | BASE TABLE |
| v_contacts | VIEW |
| vps | VIEW |
+ --------------------+------------+
24 rows in set
我们在yiibaidb
数据库中创建一个名为view_contacts
的视图,其中包括来自employees
和customers
表的名字,姓氏和电话。
Copy CREATE VIEW view_contacts
AS
SELECT lastName, firstName, extension as phone
FROM employees
UNION
SELECT contactFirstName, contactLastName, phone
FROM customers;
现在,执行查询SHOW FULL TABLES
命令:
Copy mysql > SHOW FULL TABLES;
+ --------------------+------------+
| Tables_in_yiibaidb | Table_type |
+ --------------------+------------+
| aboveavgproducts | VIEW |
| article_tags | BASE TABLE |
| bigsalesorder | VIEW |
| contacts | BASE TABLE |
| customerorders | VIEW |
| customers | BASE TABLE |
| departments | BASE TABLE |
| employees | BASE TABLE |
| employees_audit | BASE TABLE |
| officeinfo | VIEW |
| offices | BASE TABLE |
| offices_bk | BASE TABLE |
| offices_usa | BASE TABLE |
| orderdetails | BASE TABLE |
| orders | BASE TABLE |
| organization | VIEW |
| payments | BASE TABLE |
| price_logs | BASE TABLE |
| productlines | BASE TABLE |
| products | BASE TABLE |
| saleperorder | VIEW |
| user_change_logs | BASE TABLE |
| v_contacts | VIEW |
| view_contacts | VIEW |
| vps | VIEW |
+ --------------------+------------+
25 rows in set
您可以看到,v_contacts
,view_contacts
,vps
等是视图(VIEW ),而其它表则都是基表(BASE TABLE )。
对于具有很多表的数据库,一次显示所有表可能不免直观。
幸运的是,SHOW TABLES
命令提供了一个选项,允许使用LIKE 运算符或WHERE 子句中的表达式对返回的表进行过滤,如下所示:
Copy SHOW TABLES LIKE pattern;
SHOW TABLES WHERE expression;
例如,要显示yiibaidb
数据库中以字母p
开头的所有表,请使用以下语句:
Copy mysql > SHOW TABLES LIKE 'p%' ;
+ -------------------------+
| Tables_in_yiibaidb (p%) |
+ -------------------------+
| payments |
| price_logs |
| productlines |
| products |
+ -------------------------+
4 rows in set
或者显示以’es
‘字符串结尾的表,可使用以下语句:
Copy mysql > SHOW TABLES LIKE '%es' ;
+ --------------------------+
| Tables_in_yiibaidb (%es) |
+ --------------------------+
| employees |
| offices |
| productlines |
+ --------------------------+
3 rows in set
以下语句说明了如何在SHOW TABLES
语句中使用WHERE
子句列出yiibai
数据库中的所有视图 -
Copy mysql > SHOW FULL TABLES WHERE table_type = 'VIEW' ;
+ --------------------+------------+
| Tables_in_yiibaidb | Table_type |
+ --------------------+------------+
| aboveavgproducts | VIEW |
| bigsalesorder | VIEW |
| customerorders | VIEW |
| officeinfo | VIEW |
| organization | VIEW |
| saleperorder | VIEW |
| v_contacts | VIEW |
| view_contacts | VIEW |
| vps | VIEW |
+ --------------------+------------+
9 rows in set
有时,希望看到非当前使用的数据库中的表。可以使用SHOW TABLES
语句的FROM
子句来指定要显示表的数据库。
以下示例演示如何显示以’time
‘开头的表;
Copy mysql > SHOW TABLES FROM mysql LIKE 'time%' ;
+ ---------------------------+
| Tables_in_mysql ( time %) |
+ ---------------------------+
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
+ ---------------------------+
5 rows in set
以下语句相当于上面的语句,但它使用IN
而不是FROM
子句,如下所示 -
Copy mysql > SHOW TABLES IN mysql LIKE 'time%' ;
+ ---------------------------+
| Tables_in_mysql ( time %) |
+ ---------------------------+
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
+ ---------------------------+
5 rows in set
请注意,如果您没有基表或视图的权限,则它不会显示在SHOW TABLES
命令的结果集中。
在本教程中,您已经学习了如何使用MySQL SHOW TABLES
语句列出指定数据库中的所有表。