频道栏目
首页 > 资讯 > Oracle > 正文

Oracle中如何获取用户表信息等详情?

18-01-20        来源:[db:作者]  
收藏   我要投稿

1.获取当前用户的用户名

SELECT USERNAME FROM USER_USERS;

2.获取某个用户下的所有表名称

SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = '用户名';--注意大小写

3.获取当前用户下某张表的详细信息

SELECT T.TABLE_NAME,        --表名
       T.COLUMN_NAME,       --字段名
       T.DATA_TYPE,         --字段类型
       T.DATA_LENGTH,       --长度
       T.NULLABLE           --是否为空
FROM   ALL_TAB_COLS T
WHERE  TABLE_NAME = '表名';  --注意大小写

4.获取当前用户下所有表和字段信息详情

(1)

SELECT       
     T1.TABLE_NAME,     --表英文名
     T6.COMMENTS,       --表中文名
     T1.COLUMN_ID,      --字段序号
     T1.COLUMN_NAME,    --字段英文名
     T5.COMMENTS,       --字段中文名
     T1.DATA_TYPE,      --字段类型
     T1.DATA_LENGTH,    --数据长度
     T1.CHAR_LENGTH,    --字符长度
     T1.DATA_PRECISION, --数值长度
     T1.DATA_SCALE,     --数值精度
     T1.NULLABLE,       --是否允许空值
     T4.INDEX_NAME,     --索引名称
     T4.COLUMN_POSITION, --索引字段顺序号
     T4.DESCEND         --索引字段排序方式
FROM USER_TAB_COLUMNS T1   --表字段清单
LEFT JOIN (SELECT T2.TABLE_NAME,       --表名
                  T2.COLUMN_NAME,      --字段名
                  T2.COLUMN_POSITION,  --字段顺序号
                  T2.DESCEND,          --排序方式
                  T3.INDEX_NAME        --索引名称       
           FROM USER_IND_COLUMNS T2    --索引字段
           LEFT JOIN USER_INDEXES T3   --索引信息
             ON  T2.TABLE_NAME = T3.TABLE_NAME AND T2.INDEX_NAME = T3.INDEX_NAME
            AND T3.STATUS = 'VALID' AND T3.UNIQUENESS = 'UNIQUE') T4   --UNIQUE:唯一索引
  ON  T1.TABLE_NAME = T4.TABLE_NAME AND T1.COLUMN_NAME = T4.COLUMN_NAME 
LEFT JOIN USER_COL_COMMENTS T5 ON   T1.TABLE_NAME = T5.TABLE_NAME AND T1.COLUMN_NAME = T5.COLUMN_NAME 
LEFT JOIN USER_TAB_COMMENTS T6 ON  T1.TABLE_NAME = T6.TABLE_NAME
ORDER BY  T1.TABLE_NAME, T1.COLUMN_ID;

(2)

SELECT
     T1.OWNER,          --表Schema
     T1.TABLE_NAME,     --表英文名
     T6.COMMENTS,       --表中文名
     T1.COLUMN_ID,      --字段序号
     T1.COLUMN_NAME,    --字段英文名
     T5.COMMENTS,       --字段中文名
     T1.DATA_TYPE,      --字段类型
     T1.DATA_LENGTH,    --数据长度
     T1.CHAR_LENGTH,    --字符长度
     T1.DATA_PRECISION, --数值长度
     T1.DATA_SCALE,     --数值精度
     T1.NULLABLE,       --是否允许空值
     T4.INDEX_NAME,     --索引名称
     T4.COLUMN_POSITION, --索引字段顺序号
     T4.DESCEND         --索引字段排序方式
FROM ALL_TAB_COLUMNS T1   --表字段清单
LEFT JOIN (SELECT T2.TABLE_OWNER,      --表
                  T2.TABLE_NAME,       --表名
                  T2.COLUMN_NAME,      --字段名
                  T2.COLUMN_POSITION,  --字段顺序号
                  T2.DESCEND,          --排序方式
                  T3.INDEX_NAME        --索引名称       
           FROM ALL_IND_COLUMNS T2    --索引字段
           LEFT JOIN ALL_INDEXES T3   --索引信息
             ON T2.TABLE_OWNER = T3.TABLE_OWNER AND T2.TABLE_NAME = T3.TABLE_NAME AND T2.INDEX_NAME = T3.INDEX_NAME
            AND T3.STATUS = 'VALID' AND T3.UNIQUENESS = 'UNIQUE') T4   --UNIQUE:唯一索引
  ON T1.OWNER = T4.TABLE_OWNER AND T1.TABLE_NAME = T4.TABLE_NAME AND T1.COLUMN_NAME = T4.COLUMN_NAME 
LEFT JOIN ALL_COL_COMMENTS T5 ON T1.OWNER = T5.OWNER AND T1.TABLE_NAME = T5.TABLE_NAME AND T1.COLUMN_NAME = T5.COLUMN_NAME 
LEFT JOIN ALL_TAB_COMMENTS T6 ON T1.OWNER = T6.OWNER AND T1.TABLE_NAME = T6.TABLE_NAME
WHERE T1.OWNER IN ('用户名')
ORDER BY T1.OWNER, T1.TABLE_NAME, T1.COLUMN_ID;

备注:方法(1)和方法(2)的区别在于使用的表不同,表以USER开头,查询当前用户,以ALL开头,查询所有用户,以DBA开头,查询包括系统表的内容。在日常使用中,灵活变通,选择不同的表,查询自己需要的内容。

相关TAG标签
上一篇:DB2中获取用户表信息详情的方法
下一篇:SQL基础操作之表的插入、更新、删除、合并操作讲解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站