当前位置: 首页 > 技术分享  > 开发技术 > 数据库应用

SQL数据字典查询生成代码

2015/4/30 11:06:53 人评论

最近研究开源CMS,涉及数据库时,需要用到数据字典。利用下边的代码,直接读取数据库信息,生成字典。SQL2005,SQL2008测试可用。代码如…


最近研究开源CMS,涉及数据库时,需要用到数据字典。利用下边的代码,直接读取数据库信息,生成字典。SQL2005,SQL2008测试可用。

代码如下:


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'),0) as 小数位数,
       (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


相关技术

  • MSSQL2016 SSMS18 闪退解决方法

    服务器最近安装MSSQL 2016,安装包中没有集成Microsoft SQL Server Management Studio。需要另外下载,官网找到SSMS-Setup-CHS.exe,选择15.0.18118.0版本。安装完后,双击桌面 Microsoft SQL Server Management Studio 18 无响应,一闪而过。使用管理员权限,问题依旧。经…

    2019/6/10 22:30:33
  • SQL Server 数据库定时自动备份

    在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库。而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员 每天守到晚上1点去备份数据库。要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业。启动S…

    2018/6/24 10:29:38
  • 4种C#SQL语句写法

    记录4种C#SQL语句写法,个人比较喜欢用第二种string.Format方法;(1)拼接产生SQL语句: string sql = "insert into czyb(yhm,mm,qx) values(" + txtName.Text + "," + txtPassword.Text + "," + cmbPriority.Text + ")";…

    2018/2/1 12:15:34
  • MSSQL游标CURSOR应用实例

    我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加、修改、删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃力,翻遍网上的资料,找不到几个正确的并能执行的循环处理数据的方法,在…

    2017/12/8 8:38:13

共有条评论 网友评论

验证码: 看不清楚?