博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

对Sql Server 2000 系统表的常用操作

Posted on 2007-07-13 14:21  .NET酷  阅读(641)  评论(0编辑  收藏  举报

--得到数据库中所有用户表
Select [name] from sysObjects Where xtype='U'and [name]<>'dtproperties' Order By [name]

--得到数据库中所有用户视图
Select [name] From sysObjects Where xtype='V' And [name]<>'syssegments' And [name]<>'sysconstraints' Order By [name]

--获得指定表中所有的列
Select
c.name As ColumnName,
t.name As TypeName
From syscolumns c, systypes t, sysobjects o
Where c.xtype = t.xusertype
And c.id = o.id
And o.name = 'Customers'
Order By c.colorder

--获得表中所有列的详细信息
Select  ColOrder = col.colorder, --排序号
 ColumnName = col.name, --列名
 TypeName = type.name,--数据类型名称
 Length =  (Case When type.name='nvarchar' Or type.name='nchar' Then col.length/2 Else col.length End), --长度
 [PRECISION] = COLUMNPROPERTY(col.id, col.name, 'PRECISION'), --精度
 Scale = ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0), --小数
 IsIdentity = Case When COLUMNPROPERTY(col.id, col.name, 'IsIdentity')=1 Then '√' Else '' End, --是否为自动编号列
 IsPK = Case When Exists(Select 1 From sysobjects Where xtype = 'PK' And name In (
     Select name From sysindexes Where indid In (
      Select indid From sysindexkeys Where id = col.id And colid = col.colid
      )
     )
    ) Then '√' Else '' End, --是否为主键
 AllowNull = Case When col.isnullable=1 Then '√' Else '' End, --是否允许为空
 DefalutValue = isnull(com.text, '') --默认值
From syscolumns col
Left Join systypes type On col.xtype = type.xusertype
Inner Join sysobjects obj On col.id = obj.id And (obj.xtype = 'U' Or obj.xtype = 'V') And obj.name <> 'dtproperties'
Left Join syscomments com On col.cdefault = com.id
Where obj.name = 'Territories'