用SQL语句建表时如何给字段添加说明?

狼王_ 2010-07-09 04:02:06
在用SQL语句 create table 建表时如何给字段添加说明啊?
在用设计器中建表时可以为每个字段添加说明,我想用SQL语句也应该可以吧。在网上找的方法都没法实现。。。。
...全文
15171 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
j346303630 2010-09-12
  • 打赏
  • 举报
回复
额~哈~学习了~
终于找到~
狼王_ 2010-07-09
  • 打赏
  • 举报
回复
多谢上面两位 我明白了
狼王_ 2010-07-09
  • 打赏
  • 举报
回复 1
这是我的SQL语句。。。。
CREATE TABLE myF(
id INT PRIMARY KEY,
[name] varchar(100),
[class] varchar(50)
)


EXEC sp_addextendedproperty N'myF', N'字段说明', N'user', N'dbo', N'table', N'myF', N'column', N'class'
狼王_ 2010-07-09
  • 打赏
  • 举报
回复
LS的,我知道这个存储过程,我也试了。但是我的问题是在Management Studio中打开表时,字段的说明还是空啊
永生天地 2010-07-09
  • 打赏
  • 举报
回复


-- T_WORKINFO_TEMPLATE 工作信息模板

IF OBJECT_ID('T_WORKINFO_TEMPLATE') IS NOT NULL DROP TABLE T_WORKINFO_TEMPLATE
GO

CREATE TABLE T_WORKINFO_TEMPLATE
(
WORKINFO_TEMPLATE_ID CHAR(36) PRIMARY KEY, -- 主键
COMPONENTREFERENCE VARCHAR(400), -- 相关设备
ITEMNAME VARCHAR(200), --
ITEMCONTENT VARCHAR(2000), -- 保养内容
PERIOD NUMERIC(9,2), -- 预检周期
PERIODICAL VARCHAR(10), -- 周期的单位,数据取T_PERIODICAL
REMARK VARCHAR(4000), -- 备注
CLASS VARCHAR(20) -- 类别
) ON [PRIMARY]
GO

exec sp_addextendedproperty N'MS_Description', N'主键', N'user', N'dbo', N'table', N'T_WORKINFO_TEMPLATE', N'column', N'WORKINFO_TEMPLATE_ID'
exec sp_addextendedproperty N'MS_Description', N'相关设备', N'user', N'dbo', N'table', N'T_WORKINFO_TEMPLATE', N'column', N'COMPONENTREFERENCE'
exec sp_addextendedproperty N'MS_Description', N'保养项目', N'user', N'dbo', N'table', N'T_WORKINFO_TEMPLATE', N'column', N'ITEMNAME'
exec sp_addextendedproperty N'MS_Description', N'保养内容', N'user', N'dbo', N'table', N'T_WORKINFO_TEMPLATE', N'column', N'ITEMCONTENT'
exec sp_addextendedproperty N'MS_Description', N'预检周期', N'user', N'dbo', N'table', N'T_WORKINFO_TEMPLATE', N'column', N'PERIOD'
exec sp_addextendedproperty N'MS_Description', N'周期的单位,数据取T_PERIODICAL', N'user', N'dbo', N'table', N'T_WORKINFO_TEMPLATE', N'column', N'PERIODICAL'
exec sp_addextendedproperty N'MS_Description', N'备注', N'user', N'dbo', N'table', N'T_WORKINFO_TEMPLATE', N'column', N'REMARK'
GO
黄_瓜 2010-07-09
  • 打赏
  • 举报
回复
/*
在SQL语句中通过系统存储过sp_addextendedproperty可为表字段添加上动态的说明(备注)下面是SQL SERVER帮助文档中对sp_addextendedproperty存储过程的描述
语法
*/
sp_addextendedproperty
[ @name = ] { 'property_name' }
[ , [ @value = ] { 'value' }
[ , [ @level0type = ] { 'level0_object_type' }
, [ @level0name = ] { 'level0_object_name' }
[ , [ @level1type = ] { 'level1_object_type' }
, [ @level1name = ] { 'level1_object_name' }
[ , [ @level2type = ] { 'level2_object_type' }
, [ @level2name = ] { 'level2_object_name' }
]
]
]
]

参数
[ @name = ] { 'property_name' }

要添加的属性名称。property_name 的数据类型为 sysname,它不能是 NULL。名称可能还包括空白或非字母数字字符串和二进制值。

[ @value = ] { 'value' }

将要与属性相关联的值。value 的数据类型为 sql_variant,带有默认设置 NULL。value 的大小不能超过 7,500 字节;否则 SQL Server 会产生错误。

[ @level0type = ] { 'level0_object_type' }

用户或用户定义类型。level0_object_type 的数据类型为 varchar(128),其默认值为 NULL。有效的输入是 USER、TYPE 和 NULL。

[ @level0name = ] { 'level0_object_name' }

指定的 0 级对象类型的名称。level0_object_name 的数据类型为 sysname,其默认值为 NULL。

[ @level1type = ] { 'level1_object_type' }

1 级对象的类型。level1_object_type 的数据类型为 varchar(128),其默认值为 NULL。有效的输入是 TABLE、VIEW、PROCEDURE、FUNCTION、DEFAULT、RULE 和 NULL。

[ @level1name = ] { 'level1_object_name' }

指定的 1 级对象类型的名称。level1_object_name 的数据类型为 sysname,其默认值为 NULL。

[ @level2type = ] { 'level2_object_type' }

2 级对象的类型。level2_object_type 的数据类型为 varchar(128),其默认值为 NULL。有效的输入是 COLUMN、PARAMETER、INDEX、CONSTRAINT、TRIGGER 和 NULL。

[ @level2name = ] { 'level2_object_name' }

指定的 2 级对象类型的名称。level2_object_name 的数据类型为 sysname,其默认值为 NULL。

返回代码值
0(成功)或 1(失败)

注释
系统对象不允许有扩展属性。

对象是按级别区分的,0 级为最高,2 级为最低。当用户添加、更新或删除扩展属性时,必须指定所有更高级别的对象。例如,如果用户要向 1 级对象添加扩展属性,就必须指定所有 0 级信息。如果用户要向 2 级对象添加扩展属性,则必须提供关于 0 级和 1 级的所有信息。

在每个级别上,对象类型和对象名可唯一地标识对象。如果指定了一个对中的任一方,则必须指定另一方。

给定了有效 property_name 和 value,如果没有任何对象类型和名称,则属性属于当前数据库。如果指定对象类型和名称,则还必须指定父对象和类型。否则,SQL Server 会产生错误。

权限
db_owner 和 db_ddladmin 固定数据库角色的成员可以将扩展属性添加到任何对象中。用户可以为他们所拥有的对象添加扩展属性。然而,只有 db_owner 可以将属性添加到用户名称中。
下面是我在使用过程中对表ClipInfo的字段通过sp_addextendedproperty存储过程加的说明,
ALTER TABLE [dbo].[ClipInfo] ADD CONSTRAINT [PK_CLIPINFO] PRIMARY KEY CLUSTERED ([ClipNum])
GO
sp_addextendedproperty N'MS_Description', N'卡号', 'USER', N'dbo', 'TABLE', N'ClipInfo', 'COLUMN', N'ClipNum'
GO
sp_addextendedproperty N'MS_Description', N'密码', 'USER', N'dbo', 'TABLE', N'ClipInfo', 'COLUMN', N'Passd'
GO
sp_addextendedproperty N'MS_Description', N'所属地', 'USER', N'dbo', 'TABLE', N'ClipInfo', 'COLUMN', N'ClipArea'
GO
sp_addextendedproperty N'MS_Description', N'创建时间', 'USER', N'dbo', 'TABLE', N'ClipInfo', 'COLUMN', N'CreateTime'
GO
sp_addextendedproperty N'MS_Description', N'修改时间', 'USER', N'dbo', 'TABLE', N'ClipInfo', 'COLUMN', N'UpdateTime'
GO
sp_addextendedproperty N'MS_Description', N'状态', 'USER', N'dbo', 'TABLE', N'ClipInfo', 'COLUMN', N'ClipState'
GO

select * from sys.extended_properties a
where a.major_id=object_id('ta')

select * from sys.extended_properties
select * from syscolumns where id=object_id('ta')

列出表"t"中所有列的所有扩展属性:
SELECT *
FROM ::fn_listextendedproperty(NULL,'user','dbo','table','ta','column',default)
列出表"t"中列col1的描述属性:
SELECT value
FROM ::fn_listextendedproperty('MS_Description','user','dbo','table','ta','column','id')
添加表"t"中列col1的描述属性:
EXEC sp_addextendedproperty 'MS_Description','列1','user',dbo,'table','t','column',col1
删除表"t"中列col1的描述属性:
EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','t','column',col1
更新表"t"中列col1的描述属性:
EXEC sp_updateextendedproperty 'MS_Description','字段1','user',dbo,'table','t','column',col1

--表及字段描述信息处理示例

--创建表
create table 表(a1 varchar(10),a2 char(2))

--为表添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '人员信息表', N'user', N'dbo', N'table', N'表', NULL, NULL

--为字段a1添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '姓名', N'user', N'dbo', N'table', N'表', N'column', N'a1'

--为字段a2添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '性别', N'user', N'dbo', N'table', N'表', N'column', N'a2'

--更新表中列a1的描述属性:
EXEC sp_updateextendedproperty 'MS_Description','字段1','user',dbo,'table','表','column',a1

--删除表中列a1的描述属性:
EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','表','column',a1

--删除测试
drop table 表
狼王_ 2010-07-09
  • 打赏
  • 举报
回复
对了,我用的SQL 2008

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧