SqlServer2005数据库所有表和字段及其属性
简单的Sql:
1、查找表的所有索引(包括索引名,类型,构成列):
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表
2、查找表的主键(包括名称,构成列):
select cu.* from user_cons_columns cu,user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and au.table_name = 要查询的表
3、查找表的唯一性约束(包括名称,构成列):
select column_name from user_cons_columns cu,user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'U' and au.table_name = 要查询的表
4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):
select * from user_constraints c where c.constraint_type = 'R' and c.table_name = 要查询的表
查询外键约束的列名:
select * from user_cons_columns cl where cl.constraint_name = 外键名称
查询引用表的键的列名:
select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名
5、查询表的所有列及其属性
select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表
6、sql中为表加约束的sql语句
sql中为表添加约束的sql语句(请点击我)
ldy友情提示:?
如下sql语句较长,请慢慢体味
select '' as rownum,TableName_SqlServer,ColumnName,FieldType_SqlServer, FieldType_SqlServer + case ?when FieldLength is null or charindex('datetime',FieldType_SqlServer) != 0 or charindex('int',FieldType_SqlServer) != 0 ??then '' ??else '(' + FieldLength + ')' ?end as FieldTypeLen_SqlServer ,DefaultValue_SqlServer,FieldType_Oracle,DefaultValue_Oracle, case when IsNullable = '1' ?then 'Y' ?else '' end as IsNullable, case when charindex('datetime',FieldType_SqlServer) != 0 ?then '' ?else FieldLength end as FieldLength,isnull(IsKey,'') as IsKey,PkName,isnull(IsIndex,'') as isIndex,IndexName from ( ?select ta.name as TableName_SqlServer,c.name as ColumnName,c. ?IsNullable,t.name as FieldType_SqlServer,cast(c.prec as varchar) + ?case when c.scale is null ??then '' ??else ',' ?end + isnull(cast(c.scale as varchar),'') as FieldLength,isnull(co.text,'') as DefaultValue_SqlServer, ??? '' as FieldType_Oracle,'' as DefaultValue_Oracle, ?( ??select top 1 ??case when i1.status = 2066 then 'Y' else '' end from sysindexes i1,sysindexkeys k1 ??where i1.id = k1.id ??and i1.indid = k1.indid ??and i1.id = c.id ??and k1.colid = c.colid ??AND i1.status = 2066 ?) as IsKey, ?( ??select top 1 ??case when i2.status = 2066 ??then i2.name ??else '' ??end ??from sysindexes i2,sysindexkeys k2 ??where i2.id = k2.id ??and i2.indid = k2.indid ??and i2.id = c.id ??and k2.colid = c.colid ??AND i2.status = 2066 ?) as PkName, ?( ??select top 1 ??case when i3.status != 2066 ??then 'Y' ??else '' ??end ??from sysindexes i3,sysindexkeys k3 ??where i3.id = k3.id ??and i3.indid = k3.indid ??and i3.id = c.id ??and k3.colid = c.colid ??AND i3.status != 2066 ?) as IsIndex, ?( ??select top 1 ??case when i4.status != 2066 ??then i4.name ??else '' ??end ??from sysindexes i4,sysindexkeys k4 ??where i4.id = k4.id ??and i4.indid = k4.indid ??and i4.id = c.id ??and k4.colid = c.colid ??AND i4.status != 2066 ?) as IndexName ?from sysobjects ta ?inner join syscolumns c on ta.id = c.id ?left join SYSTYPES t on c.xusertype = t.xusertype ?left join syscomments co on c.cdefault = co.id ?where ta.xtype = 'U' ) b order by TableName_SqlServer,ColumnName
?
执行结果如下:

?
?
ldy-友情链接:
本文来源:(http://blog.sina.com.cn/s/blog_5421dfd20100fhvd.html) - SqlServer2005数据库所有表和字段及其属性_mousekitty_新浪博客
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|