下面是用连接的方式取得表结构,有4列,最后一列用于标明约束是单一的还是联合的。
适用于oracle,执行需要管理员权限,如果用schema来约束可以查询整个schema的数据库表结构,执行速度有点慢,如果程序中有用最好将查询结果放到 一个表中。可以按照需要对代码进行调整。
select aa.column_name,aa.comments,aa.datatype,bb.constraint_type ,bb.column_name
from
(
select a.column_name ,a.comments,b.data_type||
(CASE
WHEN b.data_scale >=0 THEN '('||b.data_length||','||b.data_scale||')'
ELSE '('||b.data_length||')'
END
) as datatype ,a.table_name
from all_col_comments a,all_tab_columns b
where a.table_name=b.table_name and a.column_name=b.column_name
) aa,
(
select DECODE(au.constraint_type, 'P', '主键约束', 'U', '唯一约束') as constraint_type,
cu.constraint_name AS column_name,cu.column_name AS comments ,au.table_name
from all_cons_columns cu, all_constraints au
where cu.constraint_name = au.constraint_name
and (au.constraint_type = 'P' or au.constraint_type ='U')
) bb
where aa.table_name=bb.table_name(+) and aa.column_name=bb.comments(+)
and aa.table_name= '表名'
order by bb.constraint_type,aa.column_name asc
mysql就下面两句话修改就行:
select * from information_schema.TABLES where TABLE_SCHEMA='sfp' and TABLE_NAME=?
select * from information_schema.COLUMNS where TABLE_SCHEMA='sfp' and TABLE_NAME=?