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