最近,项目做的差不多了,整理各种文档。整理数据库设计文档的时候,意识到表需要注释下,并且直接注释到SQL中去,这样子即使不用看文档也能大概知道表结构了,对于使用者是一种很方便的方法。当然,不知道怎么查看注释是件很无奈的事情。我写完注释,在查看上也花了不少时间。
1. 查看SQL表注释
直接上代码解释比较好:
-- 凡是带‘@’的都是要替换掉的 use @dbname -- 先定位到要查看的数据库,这个很重要,我开始漏掉了这个结果下面表名怎么改都查不到 go --显示数据库本身的描述属性 SELECT objtype, objname, name, value FROM fn_listextendedproperty(default, default, default, default, default, default, default); --显示架构下所有表的描述属性 SELECT objtype, objname, name, value FROM fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', default, NULL, NULL); GO ---显示表下所有列的描述属性 SELECT objtype, objname, name, value FROM fn_listextendedproperty(NULL, 'schema', 'dbo', 'table', @tablename, 'column', default); --@tablename 要查看的表名 省略掉dbname和dbo之类的就可以了 --显示描述属性还可以 select * from sys.extended_properties
2.编写注释
EXEC sys.sp_addextendedproperty @name = 'MS_Decription' ,@value = '我的测试表' ,@level0type='user' ,@level0name=dbo ,@level1type='table' ,@level1name=表明 ,@level2type=null ,@level2name=null --中文的地方就是自己替换掉
sp_addextendedproperty 这个函数带两个参数@name 和@value。前者是SQL 规定的类型,这里一般都用'MS_Decription',后者可以说是个结构体,@value本身代表要注释的内容。下面还有3个级别的值,@level0代表用户或用户定义类型,其type的值一般为user,name值一般为dbo。@level1代表要查看的二级对象,type可以是TABLE、VIEW、PROCEDURE、FUNCTION、DEFAULT、RULE 和 NULL。name就是对应的名称,这个名称不需要前缀。@level2代表第三级的对象,type可是是COLUMN、PARAMETER、INDEX、CONSTRAINT、TRIGGER 和 NULL,同样name是对应的名称。需要说明的是二级和三级对象的name是不需要加单引号的!要给一级对象注释就把二三级设为null,同理对二级也这么做。在设参数的时候可以省略掉参数名like this:
EXEC sys.sp_addextendedproperty 'MS_Decription','邮件对应优惠券编号','user',dbo,'table',rpt_CPA_EmailType,'column',emailType
3.编辑注释
可以添加当然可以更改了,更改命令如下,具体就不展开讲了 和 sp_addextendedproperty是一样的。
例子下载--更新表中列a1的描述属性: EXEC sp_updateextendedproperty 'MS_Description','字段','user',dbo,'table',@tablename,'column',@cloumnname --删除表中列a1的描述属性: EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table',@tablename,'column',@cloumnname
OK了,SQL的注释语法就总结这么多,有更详细的欢迎大家补充,整理的不好的请指教。另外附带一个现成的model提供给大家参考:
连接稍后奉上。