查询由指定用户创建的表
SELECT * FROM ALL_OBJECTS WHERE OWNER='用户名' AND OBJECT_TYPE='TABLE'
或者
SELECT * FROM USER_TABLES
但是上面这两种方式获取的 表 全部是由这个用户创建的表。
但是,试想一下下面这种情况:
- 用户A 有一张表 tableA
- 用户B 有一张表 tableB
用户A将tableA的权限开放给了 用户B
该如何查到 用户B 所有有权限访问的表呢?即 tableA 和 tableB。
答案是:
SELECT * FROM ALL_TABLES ;
最后,给出Oracle中,查询 表的基本信息(表名、表的注、表的创建时间、表的修改时间等) 对应的SQL。
String sql = "SELECT " +
" * " +
"FROM " +
" (" +
" SELECT " +
" AT.OWNER OWNER, AT.TABLE_NAME TABLE_NAME, UTC.COMMENTS COMMENTS, AO.CREATED CREATED, AO.LAST_DDL_TIME LAST_DDL_TIME, ROWNUM RN" +
" FROM" +
" ALL_TABLES AT" +
" LEFT JOIN" +
" ALL_OBJECTS AO" +
" ON" +
" AT.OWNER=AO.OWNER" +
" AND" +
" AT.TABLE_NAME=AO.OBJECT_NAME" +
" LEFT JOIN" +
" USER_TAB_COMMENTS UTC" +
" ON" +
" AO.OBJECT_NAME=UTC.TABLE_NAME" +
" WHERE" +
" ROWNUM<?" +
" ) " +
"WHERE" +
" RN>=?";