SQL显示表
SQL表指的是一个基本的数据库对象,它允许我们以结构化格式存储数据。关系数据库中的表由行和列组成,其中每行表示一条记录,列表示记录的特定属性。
表是任何函数关系数据库的主要构建块。因此,与数据库中的任何其他对象相比,您将遇到与它们交互的情况。
在处理SQL表时,您可能遇到的一个常见任务是获取给定数据库中的所有表。
在本教程中,我们将了解用于显示SQL数据库中的表的各种方法和技术。在本文中,我们将使用MySQL 8.0版本。
SQL显示表
在SQL中,SHOW TABLES是一个由各种关系数据库引擎(如MySQL)支持的命令。
它允许我们列出给定数据库中所有可用的表。当您需要快速浏览可用表时,特别是在不熟悉数据库模式的情况下,它非常有用。
基本语法
最好记住,尽管几乎所有数据库引擎都支持在数据库中列出表的功能,但是命令或SQL语句可能会有所不同。
然而,如果你在MySQL中工作,你可以使用本地的SHOW TABLES命令,如下所示:
SHOW TABLES [FROM db_name] [LIKE 'pattern'];
在给定的示例语法中,我们首先调用SHOW TABLES命令。这是列出可用表的主要语句。
接下来,我们指定要显示的数据库。如果省略数据库名称,语句将显示当前选定数据库中的表。
SHOW TABLE语句还支持使用LIKE语句使用类似模式的过滤。这允许我们为匹配指定模式的表指定一个过滤器。我们还可以使用通配符,如“%”来表示零个或多个字符,使用下划线来表示单个字符,等等。
示例1:显示数据库中的所有表
假设我们在MySQL中使用Sakila样例数据库来显示数据库中的所有表,而没有任何额外的过滤。我们可以使用如下所示的查询:
Mysql > show tables;
该命令返回当前数据库中所有表的列表。使用示例输出如下:
+----------------------------+
| Tables_in_sakila |
+----------------------------+
|演员|
| actor_info |
|地址|
|类别|
|城市|
|国家|
|客户|
| customer_list
| emp |
|电影|
电影演员|电影演员
| film_category |
| film_list |
|电影|电影
|库存|
|语言|
| nicer_but_slower_film_list
|付款|
|租赁|
| sales_by_film_category
sales_by_store |
|员工|
| staff_list
|商店|
+----------------------------+
24行(0.00秒)
这将返回存储在Sakila示例数据库中的所有表。
示例2:模式匹配
假设我们要过滤名称中可能包含单词“film”的任何表。我们可以像下面这样使用带有通配符的LIKE子句:
显示'%film%'表;
给定的命令列出当前数据库中所有在表名中包含单词“film”的表。
使用示例输出如下:
+----------------------------+
| Tables_in_sakila(%的电影 %) |
+----------------------------+
|电影 |
| film_actor |
| film_category |
| film_list |
| film_text |
| nicer_but_slower_film_list |
| sales_by_film_category |
+----------------------------+
7行(0.00秒)
示例3:不同的数据库
要列出特定数据库中的表,可以使用from子句,如下所示:
查看员工表
在本例中,即使我们当前使用的是Sakila数据库,该子句也会从“employees”表返回一个表列表。
使用SQL查询列出表
如果不能访问MySQL CLI,可以使用本地SQL查询列出给定数据库中的所有表。
SQL语句如下:
选择table_name
从information_schema.tables
WHERE table_schema = 'database_name';
这将返回指定模式名中的所有表。
结论
在本教程中,我们学习了有关SQL SHOW TABLES命令的所有内容,该命令允许我们从给定的数据库检索表列表。