加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SqlServer2005数据库查找所有表和字段及其属性和约束的sql语句

发布时间:2020-12-12 15:18:25 所属栏目:MsSql教程 来源:网络整理
导读: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.ta

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

?

执行结果如下:

SqlServer2005数据库所有表和字段及其属性

?

?

ldy-友情链接:

本文来源:(http://blog.sina.com.cn/s/blog_5421dfd20100fhvd.html) - SqlServer2005数据库所有表和字段及其属性_mousekitty_新浪博客

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读