获取Oracle、SqlServer、Access中表名、字段和主键(转)
一、oracle
1、获取当前oracle数据库中的所有表
select table_name from user_tables
2、查询某个表中的字段名称、类型、精度、长度、是否为空
- select
COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA_SCALE,NULLABLE - from
user_tab_columns - where
table_name ='YourTableName'
3、查询某个表中的主键字段名
- select
col.column_name - from
user_constraints con, user_cons_columns col - where
con.constraint_name = col.constraint_name - and
con.constraint_type='P' - and
col.table_name = 'YourTableName'
4、查询某个表中的外键字段名称、所引用表名、所应用字段名
- select
distinct(col.column_name),r.table_name,r.column_name - from
- user_constraints
con, - user_cons_columns
col, - (select
t2.table_name,t2.column_name,t1.r_constraint_name -
from user_constraints t1,user_cons_columns t2 -
where t1.r_constraint_name=t2.constraint_name -
and t1.table_name='YourTableName' -
) r - where
con.constraint_name=col.constraint_name - and
con.r_constraint_name=r.r_constraint_name - and
con.table_name='YourTableName'
5、如何从Oracle中取得表的注释
user_tab_comments;表注释
user_col_comments;表字段注释
以上两个只能获取自己用户的表的注释信息,如果要访问自己
能够访问的其他用户的表,则需要使用:
all_tab_comments;表注释
all_col_comments;表字段注释
当然,如果有DBA权限,则可以使用
dba_tab_comments;表注释
dba_col_comments;表字段注释
dba*和all*最好指定owner条件。user*没有该字段
user_tab_comments;表注释
user_col_comments;表字段注释
二、SQLServer
1、读取库中的所有表名
select name from sysobjects where xtype='u'
2、字段
- SELECT
c.name,t.name,c.xprec,c.xscale,c.isnullable - FROM
systypes t,syscolumns c - WHERE
t.xtype=c.xtype - AND
c.id = (SELECT id FROM sysobjects WHERE name='YourTableName') - ORDER
BY c.colid
3、主键(参考SqlServer系统存储过程sp_pkeys)
- select
COLUMN_NAME = convert(sysname,c.name)