一、分页获取数据库用户的所有表
(1)、Oracle,OceanBase(Oracle内核版),DM
使用ALL_TABLES,需要添加当前用户作为查询条件
sql
select a3.* from (select a2.* from (select a1.*, rownum rn1 from (
select t1.table_name, t2.comments from ALL_TABLES t1, ALL_TAB_COMMENTS t2 WHERE t1.table_name = t2.table_name and upper(t1.owner) = upper(?)
) a1) a2 where rn1 <= 10 ) a3 where rn1 >= 1;
使用USER_TABLES,直接就可以查到当前用户下的表
sql
select a3.* from (select a2.* from (select a1.*, rownum rn1 from (
select t1.table_name, t2.comments from USER_TABLES t1, USER_TAB_COMMENTS t2 WHERE t1.table_name = t2.table_name
) a1) a2 where rn1 <= 10 ) a3 where rn1 >= 1;
(2)、MySQL
sql
select t.* from (select table_name,table_type,TABLE_COMMENT from INFORMATION_SCHEMA.TABLES where upper(table_schema) = upper(?) and table_type = 'BASE TABLE') t limit 1,10;
(3)、gaussdb
sql
select t.* from (select table_name,table_type from INFORMATION_SCHEMA.TABLES where upper(table_catalog) = upper(?) and table_type = 'BASE TABLE') t limit 10 offset 1;
(4)、PostgreSQL
sql
select t.* from (select table_name,table_type from INFORMATION_SCHEMA.TABLES where upper(table_schema) = upper(?) and table_type = 'BASE TABLE') t limit 10 offset 1;
二、分页获取数据库用户的所有视图
(1)、Oracle,OceanBase(Oracle内核版),DM
使用ALL_TABLES,需要添加当前用户作为查询条件
sql
select a3.* from (select a2.* from (select a1.*, rownum rn1 from (
select t1.view_name, t2.comments from ALL_VIEWS t1, ALL_TAB_COMMENTS t2 WHERE t1.view_name = t2.table_name and upper(t1.owner) = upper(?)
) a1) a2 where rn1 <= 10 ) a3 where rn1 >= 1;
使用USER_TABLES,直接就可以查到当前用户下的表
sql
select a3.* from (select a2.* from (select a1.*, rownum rn1 from (
select t1.view_name, t2.comments from USER_VIEWS t1, USER_TAB_COMMENTS t2 WHERE t1.view_name = t2.table_name
) a1) a2 where rn1 <= 10 ) a3 where rn1 >= 1;
(2)、MySQL
sql
select t.* from (select table_name,table_type,TABLE_COMMENT from INFORMATION_SCHEMA.TABLES where upper(table_schema) = upper(?) and table_type = 'VIEW') t limit 1,10;
(3)、gaussdb
sql
select t.* from (select table_name,table_type from INFORMATION_SCHEMA.TABLES where upper(table_catalog) = upper(?) and table_type = 'VIEW') t limit 10 offset 1;
(4)、PostgreSQL
sql
select t.* from (select table_name,table_type from INFORMATION_SCHEMA.TABLES where upper(table_schema) = upper(?) and table_type = 'VIEW') t limit 10 offset 1;
三、查询数据库用户表的列信息
(1)、Oracle,OceanBase(Oracle内核版),DM
使用ALL_TAB_COLUMNS,需要添加当前用户作为查询条件
sql
select * from ALL_TAB_COLUMNS where upper(table_name) = upper(?) and upper(owner) = upper(?);
使用USER_TAB_COLUMNS,直接就可以查到当前用户下的表
sql
select * from USER_TAB_COLUMNS where upper(table_name) = upper(?);
(2)、MySQL,gaussdb
sql
select * from information_schema.COLUMNS where upper(table_name) = upper(?) and upper(table_schema) = upper(?);
(3)、PostgreSQL
sql
select * from information_schema.COLUMNS where upper(table_name) = upper(?) and upper(table_catalog) = upper(?);
四、获取数据库用户的所有表索引
(1)、Oracle,OceanBase(Oracle内核版),DM
使用ALL_IND_COLUMNS,需要添加当前用户作为查询条件
sql
select * from ALL_IND_COLUMNS where upper(table_name) = upper(?) AND upper(index_owner) = upper(?);
使用USER_IND_COLUMNS,直接就可以查到当前用户下的表
sql
select * from USER_IND_COLUMNS where upper(table_name) = upper(?);
(2)、MySQL
sql
select * from INFORMATION_SCHEMA.STATISTICS where upper(table_name) = upper(?) and upper(table_schema) = upper(?);
(3)、gaussdb,PostgreSQL
sql
select * from pg_indexes t where upper(tablename) = upper(?) and upper(schemaname) = upper(?);