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