sql - 列出数据库中的所有表

标签 sql database

是否有一个 SQL 命令可以列出数据库中的所有表并且独立于提供者(适用于 MSSQLServer、Oracle、MySQL)?

最佳答案

最接近的选择是查询表的INFORMATION_SCHEMA

SELECT *
FROM INFORMATION_SCHEMA.Tables
WHERE table_schema = 'mydatabase';

INFORMATION_SCHEMA 是标准 SQL 的一部分,但并非所有供应商都支持它。据我所知,唯一支持它的 RDBMS 供应商是:

一些品牌的数据库,例如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/

相关文章:

sql - 从 Access 中的日期时间字段中选择时间范围

mysql - 将级联与复合主键结合使用

php - 转换 mysql_result 困难

sql-server - 如何在 SQL Server 的 SELECT 中显示 CLOB 类型?

ios - 哪个数据库可以与 Xcode 一起使用并同时通过网站填充?

mysql - 将 select 和 dateadd 函数的结果集插入到同一个表中

php - 自动交付产品代码?

MySQL Select, Join, and Set a key as Column Name——SQL AS

mysql - 从字符串中获取十进制值的正则表达式

database - PostgreSQL:无法连接到服务器 - 连接被拒绝错误