SQLServer2008/2005 /2000生成数据字典语句(转载)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

SQLServer2008/2005 生成数据字典语句 

复制代码
SELECT      
  表名
=case   when   a.colorder=1   then   d.name   else   ''   end
,   
  表说明
=case   when   a.colorder=1   then   isnull(f.value,'')   else   ''   end
,   
  字段序号
=
a.colorder,   
  字段名
=
a.name,   
  标识
=case   when   COLUMNPROPERTY(   a.id,a.name,'IsIdentity')=1   then   ''else   ''   end
,   
  主键
=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   =   a.id   AND   colid=
a.colid   
  )))   
then   ''   else   ''   end
,   
  类型
=
b.name,   
  占用字节数
=
a.length,   
  长度
=COLUMNPROPERTY(a.id,a.name,'PRECISION'
),   
  小数位数
=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0
),   
  允许空
=case   when   a.isnullable=1   then   ''else   ''   end
,   
  默认值
=isnull(e.text,''
),   
  字段说明
=isnull(g.[value],''
)   
  
FROM
   syscolumns   a   
  
left   join   systypes   b   on   a.xtype=
b.xusertype   
  
inner   join   sysobjects   d   on   a.id=d.id     and   d.xtype='U'   and     d.name<>'dtproperties'
   
  
left   join   syscomments   e   on   a.cdefault=
e.id   
  
left   join   sys.extended_properties g   on   a.id=g.major_id   and   a.colid=
g.minor_id          
  
left   join   sys.extended_properties f   on   d.id=f.major_id   and   f.minor_id   =0
   
  
--where   d.name='要查询的表'         --如果只查询指定表,加上此条件   

  order   by    a.id,a.colorder   
复制代码

第二种版本

 

ContractedBlock.gif ExpandedBlockStart.gif Code
SQL2000生成数据字典语句

         SELECT (
case when a.colorder=1 then d.name else '' end)表名,a.colorder 序号,a.name 列名,(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else '' end) 标识,
        (
case when (SELECT count(*)
        FROM sysobjects
        WHERE (name 
in
                  (SELECT name
                FROM sysindexes
                WHERE (id 
= a.id) AND (indid in
                          (SELECT indid
                         FROM sysindexkeys
                         WHERE (id 
= a.id) AND (colid in
                                   (SELECT olid
                                  FROM yscolumns
                                  WHERE (id 
= a.id) AND (name = a.name))))))) AND
              (xtype 
= 'PK'))>0 then '' else '' end) 主键,
       b.name 类型,
       a.length 字节数,
       COLUMNPROPERTY(a.id,a.name,
'PRECISION'as 长度,
       isnull(COLUMNPROPERTY(a.id,a.name,
'Scale'),0as 小数位数,
       (
case when a.isnullable=1 then ''else '' end) 允许空,
       isnull(e.text,
'') 默认值,
       isnull(g.[value],
'') AS 描述

FROM  syscolumns  a left join systypes b
on  a.xtype
=b.xusertype
inner join sysobjects d
on a.id
=d.id  and  d.xtype='U' and  .name<>'dtproperties'
left join syscomments e
on a.cdefault
=e.id
left join sysproperties g
on a.id
=g.id AND a.colid = g.smallid
order by a.id,a.colorder

 

 SQL2005生成数据字典语句

       SELECT  (
case when a.colorder=1 then d.name else '' end)表名,a.colorder 序号,a.name 列名,(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else '' end) 标识,
        (
case when (SELECT count(*)
        FROM sysobjects
        WHERE (name 
in
                  (SELECT name
                FROM sysindexes
                WHERE (id 
= a.id) AND (indid in
                          (SELECT indid
                         FROM sysindexkeys
                         WHERE (id 
= a.id) AND (colid in
                                  (SELECT colid
                                  FROM syscolumns
                                  WHERE (id 
= a.id) AND (name = a.name))))))) AND
              (xtype 
= 'PK'))>0 then '' else '' end) 主键,
       b.name 类型,
      a.length 字节数,
       COLUMNPROPERTY(a.id,a.name,
'PRECISION'as 长度,
       isnull(COLUMNPROPERTY(a.id,a.name,
'Scale'),0as 小数位数,
       (
case when a.isnullable=1 then ''else '' end) 允许空,
       isnull(e.text,
'') 默认值,
       isnull(g.[value],
'') AS 描述

FROM  syscolumns  a left join systypes b
on  a.xtype
=b.xusertype
inner join sysobjects d
on a.id
=d.id  and  d.xtype='U' and  d.name<>'dtproperties'
left join syscomments e
on a.cdefault
=e.id
left join sys.extended_properties g
on a.id
=g.major_id AND a.colid = g.major_id
order by a.id,a.colorder

 

 

以前的SQL2000下的语句

就改动了个sysproperties

 

ContractedBlock.gif ExpandedBlockStart.gif Code
SELECT     
  表名
=case   when   a.colorder=1   then   d.name   else   ''   end
,   
  表说明
=case   when   a.colorder=1   then   isnull(f.value,'')   else   ''   end
,   
  字段序号
=
a.colorder,   
  字段名
=
a.name,   
  标识
=case   when   COLUMNPROPERTY(   a.id,a.name,'IsIdentity')=1   then   ''else   ''   end
,   
  主键
=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   =   a.id   AND   colid=
a.colid   
  )))   
then   ''   else   ''   end
,   
  类型
=
b.name,   
  占用字节数
=
a.length,   
  长度
=COLUMNPROPERTY(a.id,a.name,'PRECISION'
),   
  小数位数
=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0
),   
  允许空
=case   when   a.isnullable=1   then   ''else   ''   end
,   
  默认值
=isnull(e.text,''
),   
  字段说明
=isnull(g.[value],''
)   
  
FROM
   syscolumns   a   
  
left   join   systypes   b   on   a.xtype=
b.xusertype   
  
inner   join   sysobjects   d   on   a.id=d.id     and   d.xtype='U'   and     d.name<>'dtproperties'
   
  
left   join   syscomments   e   on   a.cdefault=
e.id   
  
left   join   sysproperties   g   on   a.id=g.id   and   a.colid=
g.smallid       
  
left   join   sysproperties   f   on   d.id=f.id   and   f.smallid=0
   
  
--where   d.name='要查询的表'         --如果只查询指定表,加上此条件   

  order   by   a.id,a.colorder   
  
原文地址: http://www.cnblogs.com/tulips/archive/2009/05/02/1447648.html
版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

posted @ 2009-05-02 01:29 温景良(Jason) Views( 304) Comments( 0) Edit 收藏
 

公告

本文转自 我的程序人生博客园博客,原文链接: http://www.cnblogs.com/wenjl520/archive/2009/05/02/1447654.html,如需转载请自行联系原作者
 
 
 
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
MySQL数据库中SQL语句分几类?
SQL语句主要分为四类,分别是数据查询语言(DQL)、数据操作语言(DML)、数据定义语言(DDL)和数据控制语言(DCL)。
|
SQL Oracle 关系型数据库
Oracle 数据库利用sql语句判断某个表是否是临时表实例演示,达梦数据库查询出所有临时表
Oracle 数据库利用sql语句判断某个表是否是临时表实例演示,达梦数据库查询出所有临时表
422 0
Oracle 数据库利用sql语句判断某个表是否是临时表实例演示,达梦数据库查询出所有临时表
|
7月前
|
SQL 数据库 C语言
使用SQL语句实现数据表管理
本次实验主要介绍如何在RDS-SQLServer数据库中使用SQL语句实现数据表管理。
180 0
|
SQL 数据库
达梦数据库表SQL语句
达梦数据库表SQL语句
276 0
|
SQL
SQL Server语句大全(增删改查数据、创建表、删除表、修改表)
SQL Server语句大全(增删改查数据、创建表、删除表、修改表)
279 0
|
SQL Oracle 关系型数据库
Oracle 数据库SQL语句查询oracle数据库表主键,查看oracle指定表的表结构实例演示
Oracle 数据库SQL语句查询oracle数据库表主键,查看oracle指定表的表结构实例演示
204 0
Oracle 数据库SQL语句查询oracle数据库表主键,查看oracle指定表的表结构实例演示
|
SQL 索引 数据库
获取SQLServer的最完整数据字典的SQL语句
原文:获取SQLServer的最完整数据字典的SQL语句 原创于2008年06月18日,2009年10月18日迁移至此。 获取SQLServer 的最完整数据字典的SQL 语句   其实网上已经流传了很多关于获取 SQLServer 的数据字典的版本,不过我相信这个应该是最全的了,本语句包括了表、字段、字段类型、字段长度、是否为空、是否递增字段、索引名称、索引的定位、索引类型、主键、外键等;通过合理的裁剪可以很方便的生成相应的数据字典。
1260 0