列出数据库中的所有表

kjv*_*kjv 5 sql database

是否有一个SQL命令将列出数据库中的所有表,哪些是独立于提供者的(适用于MSSQLServer,Oracle,MySQL)?

Bil*_*win 16

最接近的选项是查询INFORMATION_SCHEMAfor表.

SELECT *
FROM INFORMATION_SCHEMA.Tables
WHERE table_schema = 'mydatabase';
Run Code Online (Sandbox Code Playgroud)

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

某些品牌的数据库(例如Oracle,IBM DB2,Firebird,Derby等)具有类似的"目录"视图,这些视图为您提供了一个可以在系统上查询元数据的界面.但是视图的名称,它们包含的列以及它们的关系与ANSI SQL标准不匹配INFORMATION_SCHEMA.换句话说,类似的信息是可用的,但是用于获取该信息的查询是不同的.

(脚注:IBM DB2 UDB for System i中的目录视图与IBM DB2 UDB for Windows/*NIX中的目录视图不同 - 对UDB中的Universal来说太多了!)

其他一些品牌(例如SQLite)根本不提供任何可查询的元数据接口.


Ign*_*ams 5

不,他们都喜欢用自己的方式去做.