列出数据库中的所有表

时间:2009-05-10 16:02:48

标签: sql database

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

4 个答案:

答案 0 :(得分:15)

最接近的选项是查询INFORMATION_SCHEMA表格。

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

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

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

(脚注:IBM DB2 UDB for System i中的目录视图与IBM DB2 UDB for Windows / * NIX中的目录视图不同 - 对于UDB中的 Universal 而言非常多!)< / p>

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

答案 1 :(得分:5)

没有。他们都喜欢用自己的方式去做。

答案 2 :(得分:1)

不,SQL标准不限制列出表名的位置(如果有的话),因此您必须根据SQL引擎执行不同的语句(通常在特殊命名的表上SELECT语句)你正在处理。

答案 3 :(得分:1)

如果你可以使用非SQL方法,那么你有一个用于数据库的的ODBC驱动程序,它实现了SQLTables入口点,你可能可能会得到你想要的信息!

pjjH

API的详细信息: http://msdn.microsoft.com/en-us/library/ms711831.aspx