是否有一个 SQL 命令可以列出数据库中的所有表并且独立于提供者(适用于 MSSQLServer、Oracle、MySQL)?
最佳答案
最接近的选择是查询表的INFORMATION_SCHEMA
。
SELECT *
FROM INFORMATION_SCHEMA.Tables
WHERE table_schema = 'mydatabase';
INFORMATION_SCHEMA
是标准 SQL 的一部分,但并非所有供应商都支持它。据我所知,唯一支持它的 RDBMS 供应商是:
- MySQL
- PostgreSQL
- Microsoft SQL Server 2000/2005/2008
一些品牌的数据库,例如Oracle、IBM DB2、Firebird、Derby 等具有类似的“目录” View ,它们为您提供了一个界面,您可以在其中查询系统上的元数据。但是 View 的名称、它们包含的列及其关系不符合 INFORMATION_SCHEMA
的 ANSI SQL 标准。换句话说,类似的信息可用,但您用来获取该信息的查询是不同的。
(脚注:IBM DB2 UDB for System i 中的目录 View 与 IBM DB2 UDB for Windows/*NIX 中的目录 View 不同——对于 UDB 中的Universal 来说差别太大了!)
其他一些品牌(例如 SQLite)根本不提供任何可查询的元数据接口(interface)。
关于sql - 列出数据库中的所有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/845571/