Oracle中获取用户表信息详情

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开头,查询包括系统表的内容。在日常使用中,灵活变通,选择不同的表,查询自己需要的内容。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿飞哥-Jeffrey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值