虽然DESC 命令能查看表的结构,但有时希望将表的结构输入到一张表中去或导入到EXCEL。用DESC命令有点繁琐。其实一条SQL语句即可。
查询自己能看到的表的表结构:
SELECT T1.TABLE_NAME,
T1.COLUMN_NAME,
T1.DATA_TYPE || '(' || T1.DATA_LENGTH || ')',
T2.COMMENTS
FROM USER_TAB_COLS T1, USER_COL_COMMENTS T2
WHERE T1.TABLE_NAME = T2.TABLE_NAME
AND T1.COLUMN_NAME = T2.COLUMN_NAME
AND T1.TABLE_NAME = 'EMP';
如果是DBA则可能过ALL_ 和DBA_来查询所有的表结构。
SQL92的写法,但是不知道怎么加限制条件,好像用了USING就不可以了。当然可以去掉USING换成 ON
SELECT TABLE_NAME,
COLUMN_NAME,
T1.DATA_TYPE || '(' || T1.DATA_LENGTH || ')',
T2.COMMENTS
FROM USER_TAB_COLS T1 INNER JOIN USER_COL_COMMENTS T2
USING(table_name,COLUMN_name);
注意,如果有些字段没有注释,是不能显示的, 这样改:
SELECT t.table_name,
t.colUMN_NAME,
t.DATA_TYPE || '(' || t.DATA_LENGTH || ')',
t1.COMMENTS
FROM User_Tab_Cols t, User_Col_Comments t1
WHERE t.table_name = t1.table_name
AND t.column_name = t1.column_name(+);
加个外连接就行了。