浅谈我在SqlServer中维护简单数据词典的方法
2012-01-29 17:26
204 查看
前几天在园子里看了一篇清空所有表数据的博客,里面洋洋洒洒几十行代码,看的出作者是很用心写出的代码,可为啥我看的这么蛋疼?明明是很简单的操作嘛。
1,用下面语句生成清空所有表数据的sql语句:
效果如下:
2,把查询结果复制到查询分析器里,执行就ok了。
这种方法简单明了,相信任何人都能看懂,并且因为是分2步执行的,如果其中有不需要清空的配置信息,可以不执行相关语句或者在相关语句里加条件都很方便。
类似的,如果要删除数据库所有表也很简单了,如下语句:
既然说到这里,我顺便分享下我维护数据词典的方式。我习惯把数据库每个表以及每个表的每个字段都写上备注,并且也要求公司的程序员都如此做。具体例子,比如写一个简单的日志记录程序:
1,首先创建表
我习惯用sql语句创建,当然直接在企业管理器创建也是可以的,如下图填写列注释:
下图填写表注释:
2,如果所有的表都按照类似方式创建,那么查看数据词典就可用如下语句:
效果如下:
当然这样如果多个表的时候直接看内容太多,可以写一个简单的程序,把上面这个语句查出来的数据分组显示一下,就是一个很好的数据词典了。我简单写的一个程序界面如下:(代码就不分享了,数据都有了,如何让他显示出来对程序员来说是很简单的事)
不过在查询分析器里,一般一次也就看一个表比较方便。
这样做的好处不用多说,数据词典直接存在数据库中,更新维护都很方便。
1,用下面语句生成清空所有表数据的sql语句:
--生成清空所有表数据的sql语句 select 'truncate table '+name from sysobjects where xtype='u'
效果如下:
2,把查询结果复制到查询分析器里,执行就ok了。
这种方法简单明了,相信任何人都能看懂,并且因为是分2步执行的,如果其中有不需要清空的配置信息,可以不执行相关语句或者在相关语句里加条件都很方便。
类似的,如果要删除数据库所有表也很简单了,如下语句:
--生成删除所有表的sql语句 select 'drop table '+name from sysobjects where xtype='u'
既然说到这里,我顺便分享下我维护数据词典的方式。我习惯把数据库每个表以及每个表的每个字段都写上备注,并且也要求公司的程序员都如此做。具体例子,比如写一个简单的日志记录程序:
1,首先创建表
-- 创建表[员工日志系统]开始: IF EXISTS (SELECT 1 FROM sysobjects WHERE xtype='u' AND name='logAdminWork') drop table logAdminWork CREATE TABLE [logAdminWork] ( [id] integer IDENTITY (1, 1) PRIMARY KEY NOT NULL , [adminID] int, [departMent] [varchar] (20), [dt] [datetime], [content] [text] ) exec sp_addextendedproperty N'MS_Description',N'员工日志系统 ',N'user',N'dbo',N'table',N'logAdminWork', NULL, NULL exec sp_addextendedproperty N'MS_Description',N'id',N'user',N'dbo',N'table',N'logAdminWork',N'column',N'id' exec sp_addextendedproperty N'MS_Description',N'管理员id',N'user',N'dbo',N'table',N'logAdminWork',N'column',N'adminID' exec sp_addextendedproperty N'MS_Description',N'部门',N'user',N'dbo',N'table',N'logAdminWork',N'column',N'departMent' exec sp_addextendedproperty N'MS_Description',N'日期',N'user',N'dbo',N'table',N'logAdminWork',N'column',N'dt' exec sp_addextendedproperty N'MS_Description',N'内容',N'user',N'dbo',N'table',N'logAdminWork',N'column',N'content' -- 创建表[员工日志系统]结束。 --------------------------
我习惯用sql语句创建,当然直接在企业管理器创建也是可以的,如下图填写列注释:
下图填写表注释:
2,如果所有的表都按照类似方式创建,那么查看数据词典就可用如下语句:
--查看数据词典 select isnull(m.value,x.colname+'**') as memo,x.colname,x.typename,x.fdlength,x.[isnull],x.colid,x.tblname from (Select o.name as tblname,c.name as colname,t.name as typename,c.length as fdlength,c.isnullable as [isnull] ,c.colid,o.id as oid from syscolumns as c,systypes as t,sysobjects as o Where o.id=c.id and o.xtype='u' and o.status>=0 and t.xtype=c.xtype ) as x left join sys.extended_properties as m on m.major_id=x.oid and x.colid=m.minor_id order by x.tblname,x.colid
效果如下:
当然这样如果多个表的时候直接看内容太多,可以写一个简单的程序,把上面这个语句查出来的数据分组显示一下,就是一个很好的数据词典了。我简单写的一个程序界面如下:(代码就不分享了,数据都有了,如何让他显示出来对程序员来说是很简单的事)
不过在查询分析器里,一般一次也就看一个表比较方便。
--查看单个表的数据词典 declare @tblname varchar(20) set @tblname='logAdminWork' select isnull(m.value,x.colname+'**') as memo,x.colname,x.typename,x.fdlength,x.[isnull],x.colid,x.tblname from (Select o.name as tblname,c.name as colname,t.name as typename,c.length as fdlength,c.isnullable as [isnull] ,c.colid,o.id as oid from syscolumns as c,systypes as t,sysobjects as o Where o.id=c.id and o.xtype='u' and o.status>=0 and t.xtype=c.xtype and o.name=@tblname ) as x left join sys.extended_properties as m on m.major_id=x.oid and x.colid=m.minor_id order by x.tblname,x.colid
这样做的好处不用多说,数据词典直接存在数据库中,更新维护都很方便。
相关文章推荐
- sqlserver 删除重复数据的简单方法
- 简单总结db2,sqlserver,oracle,mysql 取数据集中的几条数据的方法
- sqlserver用当前行减去前一行的数据的简单处理方法 -- 不使用循环
- 针对Sqlserver大数据量插入速度慢或丢失数据的解决方法
- sqlserver,获取调用存储过程返回数据的方法。
- SQLServer 数据去重高效方法
- asp.net实现将Excel中多个sheet数据导入到SQLSERVER中的方法
- php里少用到的session_module_name,以及session的key值限制,简单将session存储为json格式数据的方法
- 浅谈在ASP.NET中数据有效性校验的方法
- GridView,空数据时显示表头最简单的方法!
- 浅谈数据权限的实现方法和作用机制
- C#中的类SqlCommand对象使用方法ExecuteNonQuery()调用SQLServer存储过程时,存储过程执行成功,数据发生改变,但是返回-1
- SQLServer 批量插入数据的两种方法
- 浅谈数据仓库建设中的数据建模方法
- AJAX学习基础:简单介绍数据岛使用方法
- SQLServer和Access、Excel数据传输简单总结
- 教你几种在SQLServer中删除重复数据方法
- SqlServer中在当前数据库服务器上得到另一数据库服务器上数据的方法
- 维护网站,贴公告的简单方法。