SQL 列举模式中的表,你想列出在某个模式里创建的所有表。
SQL 列举模式中的表 问题描述
你想列出在某个模式里创建的所有表。
SQL 列举模式中的表 解决方案
下面的每种解决方案都假设你正在使用 SMEAGOL 模式。每一种解决方案的基本思路都是一致的:检索数据库里的某个系统表(或者视图),你创建的每个表都对应着该系统表里的一行记录。
DB2
查询 SYSCAT.TABLES
。
1 select tabname
2 from syscat.tables
3 where tabschema = 'SMEAGOL'
Oracle
查询 SYS.ALL_TABLES
。
select table_name
from all_tables
where owner = 'SMEAGOL'
PostgreSQL、MySQL 和 SQL Server
查询 INFORMATION_SCHEMA.TABLES
。
1 select table_name
2 from information_schema.tables
3 where table_schema = 'SMEAGOL'
SQL 列举模式中的表 扩展知识
就像我们为自己的应用程序创建表和视图一样,数据库系统也以表和视图的形式把自身的信息提供给我们。例如,Oracle 数据库含有如 ALL_TABLES
这样的内容丰富的系统视图,可以查询关于表、索引、授权以及其他数据库对象的信息。
Oracle 数据库的目录视图其实就是普通的视图。它们基于一组底层表,但这些表中的信息非常不便于用户读取。目录视图为 Oracle 数据库的元数据提供了一个非常易用的外部接口。
Oracle 的系统视图和 DB2 的系统表各不相同。另外,PostgreSQL、MySQL 和 SQL Server 都支持信息模式(information schema),这是按照 ISO SQL 标准定义的一组视图。这就是为什么同一条查询语句能够适用于这三种数据库。