CREATE TABLE Users ( Id INT IDENTITY(1,1) PRIMARY KEY COMMENT '主键', FirstName NVARCHAR(50) NOT NULL COMMENT '用户名', LastName NVARCHAR(50) NOT NULL COMMENT '上一次用户名', Email NVARCHAR(100) NOT NULL UNIQUE COMMENT '邮箱', Password NVARCHAR(100) NOT NULL COMMENT '密码', DepartmentId INT NOT NULL FOREIGN KEY REFERENCES Departments(Id) COMMENT '所属部门' ) COMMENT '用户表';这样对吗
时间: 2023-12-23 07:05:03 浏览: 99
database-manage.zip_GO!
在 SQL Server 中,CREATE TABLE 语句不支持 COMMENT 关键字。因此,上面的语句是无法执行的。
要为表和表中的列添加注释,可以使用 sp_addextendedproperty 存储过程,具体步骤如下:
1. 创建表时,不需要使用 COMMENT 关键字,只需要定义表的结构即可。
2. 使用 sp_addextendedproperty 存储过程为表添加注释,语法如下:
```
EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = '这里是表的注释',
@level0type = N'Schema',
@level0name = 'dbo',
@level1type = N'Table',
@level1name = 'Users';
```
其中,@value 参数指定了注释内容,@level0name 和 @level1name 参数指定了表所在的模式和表名。
3. 使用 sp_addextendedproperty 存储过程为表中的列添加注释,语法如下:
```
EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = '这里是列的注释',
@level0type = N'Schema',
@level0name = 'dbo',
@level1type = N'Table',
@level1name = 'Users',
@level2type = N'Column',
@level2name = 'FirstName';
```
其中,@level2type 和 @level2name 参数指定了要为哪个列添加注释。
4. 使用类似的方式为其他列添加注释。
注意:这里的注释是存储在扩展属性中的,不同于 MySQL 中的 COMMENT。因此,在查询表结构时,需要使用特定的元数据函数来获取注释信息,例如:
```
SELECT t.name AS TableName, p.value AS TableComment
FROM sys.tables t
LEFT JOIN sys.extended_properties p ON p.major_id = t.object_id AND p.minor_id = 0 AND p.name = 'MS_Description'
WHERE t.name = 'Users';
```
```
SELECT c.name AS ColumnName, p.value AS ColumnComment
FROM sys.tables t
INNER JOIN sys.columns c ON c.object_id = t.object_id
LEFT JOIN sys.extended_properties p ON p.major_id = c.object_id AND p.minor_id = c.column_id AND p.name = 'MS_Description'
WHERE t.name = 'Users';
```
阅读全文