sql-show-tables
SQL - 列出数据库表
Section titled “SQL - 列出数据库表”在数据库开发和管理过程中,您经常需要查看可用表的列表。这对于模式发现、调试或规划迁移至关重要。本教程涵盖了标准、跨平台的方法以及主要数据库系统中特有但通常更快更简便的命令。
1. 列出表的简介
Section titled “1. 列出表的简介”每个关系型数据库管理系统(RDBMS)都会在其系统表或视图中存储关于自身结构的元数据,包括表、列、视图和索引。查询这些元数据可以帮助您列出数据库中的对象。主要有两种方法:
- SQL 标准方法: 使用
INFORMATION_SCHEMA,它被设计为一个在不同 SQL 数据库之间一致且可移植的接口。 - 原生命令: 使用您正在使用的 RDBMS 特有的命令或系统视图(例如 MySQL 中的
SHOW TABLES)。
2. 标准方法:INFORMATION_SCHEMA
Section titled “2. 标准方法:INFORMATION_SCHEMA”INFORMATION_SCHEMA 是一组 ANSI SQL 标准视图,提供了关于数据库元数据的信息。它是查询表的最可移植方式,并受到 PostgreSQL、MySQL、SQL Server 等数据库的支持。
SELECT table_name, table_typeFROM information_schema.tablesWHERE table_schema = 'your_database_name' -- 或者 PostgreSQL 的 'public' AND table_type = 'BASE TABLE'; -- 用于排除视图The table_schema 过滤器很重要,可以避免列出系统表。默认模式的名称可能有所不同(PostgreSQL 中为 ‘public’,MySQL 中为数据库名称)。
| 表名 | 表类型 |
|---|---|
| employees | BASE TABLE |
| products | BASE TABLE |
| orders | BASE TABLE |
3. 数据库特定命令
Section titled “3. 数据库特定命令”虽然 INFORMATION_SCHEMA 具有可移植性,但大多数数据库也提供其自身的原生命令,这些命令通常更简洁。
MySQL / MariaDB
Section titled “MySQL / MariaDB”The SHOW TABLES 命令是在 MySQL 或 MariaDB 数据库中列出表的最常用方法。
-- 首先,选择要使用的数据库USE your_database_name;
-- 然后,列出其中的表SHOW TABLES;您还可以使用 LIKE 子句进行模式匹配:
SHOW TABLES LIKE 'prod%'; -- 显示以 'prod' 开头的表PostgreSQL
Section titled “PostgreSQL”当使用 psql 命令行客户端时,\dt 命令是一个方便的快捷方式。
\dt -- 列出当前模式中的表要通过标准 SQL 查询执行此操作,您将使用上一节中所示的 information_schema。
SQL Server
Section titled “SQL Server”SQL Server 在 sys 模式中提供了系统视图,用于详细的、特定于服务器的元数据。
-- 此视图提供更多特定于 SQL Server 的详细信息SELECT name AS table_name, create_date, modify_dateFROM sys.tables;一个旧的视图 sysobjects 也存在,但已被弃用。在现代开发中,您应该优先使用 sys.tables 或 information_schema.tables。
注意:sysobjects 是一个向后兼容视图,不应在新开发工作中使用。它的 xtype 列使用单字符代码(‘U’ 代表用户表,‘V’ 代表视图)来标识对象类型。
Oracle
Section titled “Oracle”Oracle 使用一组数据字典视图来存储元数据。列出表最常用的视图是:
- USER_TABLES: 列出当前用户拥有的所有表。
- ALL_TABLES: 列出当前用户有权访问的所有表。
- DBA_TABLES: 列出整个数据库中的所有表(需要更高权限)。
-- 查看您拥有的表SELECT table_name FROM USER_TABLES;
-- 查看所有您可以访问的表SELECT owner, table_name FROM ALL_TABLES;4. 可移植性最佳实践
Section titled “4. 可移植性最佳实践”如果您正在编写需要在不同数据库系统上运行的应用程序或脚本,使用 INFORMATION_SCHEMA 是最可靠和推荐的方法。虽然原生命令可能更容易输入,但它们会将您的代码锁定到特定的 RDBMS。对于通过命令行客户端进行的快速、交互式探索,原生命令完全可以接受,并且通常更方便。