当前位置:首页 > 问答 > 正文

MSSQL里怎么给表加注释,语法啥样简单演示一下

在MSSQL(也就是微软的SQL Server)里,给表加注释,这个操作的专业术语叫做“添加扩展属性”,听起来有点复杂,但其实道理很简单,你可以把它想象成是给你数据库里的表贴一张便利贴,上面写几句话,说明这个表是干什么用的,这张“便利贴”不仅能贴在表上,还能贴在字段(也就是列)上、视图上等等。

最核心、最推荐使用的语法是使用一个叫做 sp_addextendedproperty 的系统存储过程,存储过程你可以理解成SQL Server预先准备好的一段程序,我们通过执行它来完成任务,给表加注释的完整语法看起来是这样的:

EXEC sp_addextendedproperty
    @name = N'MS_Description',   -- 属性名,固定写这个,表示是描述信息
    @value = N'这里是你的注释内容',  -- 属性值,就是你想写的注释
    @level0type = N'SCHEMA',     -- 第一级类型,通常是架构,固定写'SCHEMA'
    @level0name = N'dbo',        -- 第一级名称,通常是架构名,#39;dbo'
    @level1type = N'TABLE',      -- 第二级类型,这里是表,固定写'TABLE'
    @level1name = N'你的表名';     -- 第二级名称,就是你要加注释的那个表的名字

我来给你拆解一下这个语法,让你明白每一部分是干嘛的:

  1. EXEC sp_addextendedproperty:这是执行命令的开头,意思是“执行添加扩展属性这个操作”。
  2. @name = N'MS_Description':这是属性的名字。MS_Description 是SQL Server内部约定俗成的一个名字,专门用来表示“描述”或者“注释”,你基本不用改它,就固定写这个,前面的N是为了支持Unicode字符(比如中文),确保你的注释能正常显示中文。
  3. @value = N'这里是你的注释内容':这是最重要的部分,就是你想要写的具体注释内容,同样,前面的N是为了支持中文。
  4. @level0type@level0name:这两个参数用来定位你的表在数据库中的“容器”,在SQL Server里,表通常放在一个叫“架构”的容器里,最常用的架构名就是 dbo(数据库所有者的缩写),所以这里@level0typeSCHEMA@level0namedbo,如果你的表不在dbo架构下,就需要改成相应的架构名。
  5. @level1type@level1name:这两个参数就是精准定位到你想要注释的那个对象了,因为我们要注释的是表,所以@level1typeTABLE@level1name就写你的表的实际名称。

简单演示一下:

假设我有一个数据库,里面有一个叫做 Employee(员工)的表,我想给它加个注释,说明这个表是“用于存储公司所有员工的基本信息”。

MSSQL里怎么给表加注释,语法啥样简单演示一下

那么我的SQL语句就应该这么写:

-- 给 Employee 表添加注释
EXEC sp_addextendedproperty
    @name = N'MS_Description',
    @value = N'用于存储公司所有员工的基本信息表',
    @level0type = N'SCHEMA',
    @level0name = N'dbo',
    @level1type = N'TABLE',
    @level1name = N'Employee';

执行完这段代码后,注释就加好了。

怎么查看注释?

光加上去还得能看见才行,查看注释也有对应的存储过程,叫 sp_help,或者查询系统视图,最简单的方法就是直接用SQL Server Management Studio(SSMS)这个管理工具,在“对象资源管理器”里,右键点击你的表,选择“属性”,然后在弹出的窗口里看“扩展属性”那一页,你写的注释就在那里。

MSSQL里怎么给表加注释,语法啥样简单演示一下

如果你想用SQL语句查,可以这样:

-- 查看表的扩展属性(注释)
SELECT *
FROM fn_listextendedproperty (
    N'MS_Description', -- 属性名
    N'SCHEMA', N'dbo', -- 架构级别
    N'TABLE', N'Employee' -- 表级别
);

给表的字段加注释

给字段(列)加注释也非常常用,语法几乎一样,只是需要多一级定位,因为字段是存在于表里面的,所以我们需要指定到第三级。

语法如下:

MSSQL里怎么给表加注释,语法啥样简单演示一下

EXEC sp_addextendedproperty
    @name = N'MS_Description',
    @value = N'这里是字段的注释内容',
    @level0type = N'SCHEMA', @level0name = N'dbo',
    @level1type = N'TABLE',  @level1name = N'你的表名',
    @level2type = N'COLUMN', @level2name = N'你的字段名'; -- 多了这一级,指定是哪个字段

再演示一下:

我想给 Employee 表里的 EmployeeName(员工姓名)这个字段加个注释。

-- 给 Employee 表的 EmployeeName 字段添加注释
EXEC sp_addextendedproperty
    @name = N'MS_Description',
    @value = N'员工的完整姓名',
    @level0type = N'SCHEMA', @level0name = N'dbo',
    @level1type = N'TABLE',  @level1name = N'Employee',
    @level2type = N'COLUMN', @level2name = N'EmployeeName';

总结一下关键点:

  • 核心命令sp_addextendedproperty
  • 注释名称:固定用 MS_Description
  • 层级概念:像地址一样,从大到小定位(架构 -> 表 -> 字段)。
  • 支持中文:记得在字符串前加 N
  • 适用对象:不仅可以注释表和字段,还可以注释视图、存储过程等,原理类似,调整 @levelXtype 即可。

这种方式是SQL Server官方推荐的标准做法,兼容性好,而且能被各种数据库工具识别,虽然一开始看语法有点长,但理解了层级结构之后就很容易记住了,养成给表和字段加注释的习惯,对于后期维护和团队协作非常有帮助,一看注释就知道这个表或字段是干什么的,不用再去猜或者翻文档。

(根据微软官方SQL Server文档中关于sp_addextendedproperty存储过程的说明)