是否有一个SQL命令会列出数据库中的所有表,哪些是独立于提供者的(适用于MSSQLServer,Oracle,MySQL)?
答案 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