SQL Server扩展属性的增、删、改、查

使用 sql 语句创建表时,可以使用系统存储过程 sp_addextendedproperty 给字段添加描述说明。

sp_addextendedproperty 语法

 1 sp_addextendedproperty
 2     [ @name = ] { ‘property_name‘ }
 3     [ , [ @value = ] { ‘value‘ }
 4         [ , [ @level0type = ] { ‘level0_object_type‘ }
 5           , [ @level0name = ] { ‘level0_object_name‘ }
 6                 [ , [ @level1type = ] { ‘level1_object_type‘ }
 7                   , [ @level1name = ] { ‘level1_object_name‘ }
 8                         [ , [ @level2type = ] { ‘level2_object_type‘ }
 9                           , [ @level2name = ] { ‘level2_object_name‘ }
10                         ]
11                 ]
12         ]
13     ]
14 [;] 
1 execute sys.sp_addextendedproperty
2 @name = N‘MS_Description‘,
3 @value = N‘要添加的属性信息‘,
4 @level0type = N‘Schema‘,
5 @level0name = N‘dbo‘,
6 @level1type = N‘table‘,
7 @level1name = N‘表名‘,
8 @level2type = N‘column‘,
9 @level2name = N‘列名‘

参数:

[ @name ] = { ‘property_name‘ }
是要添加的属性的名称。 property_name是sysname和不能为 NULL。 名称还可以包括空格或非字母数字字符串以及二进制值。

[ @value= ] { ‘value‘}
要与属性关联的值。 是sql_variant,默认值为 NULL。 value 的大小不能超过 7,500 个字节。

[ @level0type=] {level0_object_type}
级别 0 对象的类型。 level0_object_type是varchar (128),默认值为 NULL。

有效输入包括:ASSEMBLY、CONTRACT、EVENT NOTIFICATION、FILEGROUP、MESSAGE TYPE、PARTITION FUNCTION、PARTITION SCHEME、REMOTE SERVICE BINDING、ROUTE、SCHEMA、SERVICE、USER、TRIGGER、TYPE、PLAN GUIDE 和 NULL。

[ @level0name=] {level0_object_name}
所指定的级别 0 对象类型的名称。 level0_object_name是sysname默认值为 NULL。

[ @level1type=] {level1_object_type}
级别 1 对象的类型。 level1_object_type是varchar (128),默认值为 NULL。

有效的输入包括:AGGREGATE、DEFAULT、FUNCTION、LOGICAL FILE NAME、PROCEDURE、QUEUE、RULE、SYNONYM、TABLE、TABLE_TYPE、TYPE、VIEW、XML SCHEMA COLLECTION 和 NULL。

[ @level1name=] {level1_object_name}
所指定的级别 1 对象类型的名称。 level1_object_name是sysname,默认值为 NULL。

[ @level2type=] {level2_object_type}
级别 2 对象的类型。 level2_object_type是varchar (128),默认值为 NULL。

有效的输入包括:COLUMN、CONSTRAINT、EVENT NOTIFICATION、INDEX、PARAMETER、TRIGGER 和 NULL。

[ @level2name=] {level2_object_name}
所指定的级别 2 对象类型的名称。 level2_object_name是sysname,默认值为 NULL。

返回代码值:

0(成功)或 1(失败)

 1 create table Department
 2 (
 3     D_ID    int        not null    identity(1,1) primary key,
 4     D_Name    varchar(50) not null unique,
 5     D_Url    varchar(200) null ,
 6     D_ImgUrl    varchar(200) null,
 7     D_ParentID    int not null default(0),
 8     D_Remark    varchar(500) null
 9 )
10 go
11
12 --为表(Department)添加描述信息
13 execute sys.sp_addextendedproperty N‘MS_Description‘,N‘部门表‘,N‘Schema‘,N‘dbo‘,N‘table‘,N‘Department‘,null,null
14 go
15 --为字段添加描述信息                     属性名称    要添加的属性信息    级别0     级别0   级别1     级别1        级别2    级别2
16 execute sys.sp_addextendedproperty N‘MS_Description‘,N‘部门表ID‘,N‘Schema‘,N‘dbo‘,N‘table‘,N‘Department‘,N‘column‘,N‘D_ID‘
17 execute sys.sp_addextendedproperty N‘MS_Description‘,N‘部门名称‘,N‘Schema‘,N‘dbo‘,N‘table‘,N‘Department‘,N‘column‘,N‘D_Name‘
18 execute sys.sp_addextendedproperty N‘MS_Description‘,N‘链接地址‘,N‘Schema‘,N‘dbo‘,N‘table‘,N‘Department‘,N‘column‘,N‘D_Url‘
19 execute sys.sp_addextendedproperty N‘MS_Description‘,N‘节点图片地址‘,N‘Schema‘,N‘dbo‘,N‘table‘,N‘Department‘,N‘column‘,N‘D_ImgUrl‘
20 execute sys.sp_addextendedproperty N‘MS_Description‘,N‘父节点ID‘,N‘Schema‘,N‘dbo‘,N‘table‘,N‘Department‘,N‘column‘,N‘D_ParentID‘
21 execute sys.sp_addextendedproperty N‘MS_Description‘,N‘部门描述‘,N‘Schema‘,N‘dbo‘,N‘table‘,N‘Department‘,N‘column‘,N‘D_Remark‘
22 go

PS: SQL Server 数据库中的对象分为三个级别:0、1 和 2。 级别 0 是最高级别,2 级为最低。当用户添加、更新或删除扩展属性时,必须指定所有更高级别的对象。例如,当将扩展属性添加到表列(级别 2)时,还必须指定包含该列的表名(级别 1)以及包含该表的架构(级别 0)。

为表和字段添加了扩展属性之后,可以使用扩展属性目录视图 sys.extended_properties 查询到所添加的扩展属性。

sys.extended_properties 针对当前数据库中的每个扩展属性返回一行。

列名 数据类型 Description(描述)
class tinyint 标识其上存在属性的项类。 可以为以下各项之一:

0 = 数据库

1 = 对象或列

2 = 参数

3 = 架构

4 = 数据库主体

5 = 程序集

6 = 类型

7 = 索引

10 = XML 架构集合

15 = 消息类型

16 = 服务约定

17 = 服务

18 = 远程服务绑定

19 = 路由

20 = 数据空间(文件组或分区方案)

21 = 分区函数

22 = 数据库文件

27 = 计划指南

class_desc nvarchar(60) 其上存在扩展属性的类的说明。 可以为以下各项之一:

DATABASE

OBJECT_OR_COLUMN

参数

SCHEMA

DATABASE_PRINCIPAL

ASSEMBLY

TYPE

INDEX

XML_SCHEMA_COLLECTION

MESSAGE_TYPE

SERVICE_CONTRACT

SERVICE

REMOTE_SERVICE_BINDING

ROUTE

DATASPACE

PARTITION_FUNCTION

DATABASE_FILE

PLAN_GUIDE

major_id int 其上存在扩展属性的项的 ID,根据项类进行解释。 对于大多数项,该 ID 适用于类所表示的项。 下列是非标准主 ID 的解释:

如果 class 为 0,则 major_id 始终为 0。

如果 class 为 1、2 或 7,则 major_id 为 object_id。

minor_id int 其上存在扩展属性的项的辅助 ID,根据项类进行解释。 对于大多数项,ID 为 0;否则,ID 为下列值之一:

如果 class = 1,则 minor_id 在项为列的情况下等于 column_id,在项为对象的情况下等于 0。

如果 class = 2,则 minor_id 为 parameter_id。

如果 class = 7,则 minor _id 为 index_id。

name sysname 属性名,其 class、major_id 和 minor_id 是唯一的。
sql_variant
扩展属性的值。

1 --查询所有的扩展属性
2 select * from sys.extended_properties
3
4 --查询指定表的扩展属性
5 select * from sys.extended_properties where major_id=object_id(‘Department‘)

或者还可以使用函数 fn_listextendedproperty 查询扩展属性,fn_listextendedproperty 返回数据库对象的扩展属性值。

fn_listextendedproperty 语法:

1 fn_listextendedproperty (
2     { default | ‘property_name‘ | NULL }
3   , { default | ‘level0_object_type‘ | NULL }
4   , { default | ‘level0_object_name‘ | NULL }
5   , { default | ‘level1_object_type‘ | NULL }
6   , { default | ‘level1_object_name‘ | NULL }
7   , { default | ‘level2_object_type‘ | NULL }
8   , { default | ‘level2_object_name‘ | NULL }
9   )  

下面是 fn_listextendedproperty 返回的表的格式。

列名 数据类型
objtype sysname
objname sysname
name sysname
sql_variant

参数同上,使用方法如下:

1 --查询指定表的所有列的扩展属性                                                                              default 即默认所有列
2 SELECT * FROM fn_listextendedproperty(‘MS_Description‘, ‘Schema‘, ‘dbo‘, ‘table‘, ‘Department‘, ‘column‘, default)
3
4 --查询指定表的指定列的扩展属性
5 SELECT * FROM fn_listextendedproperty(‘MS_Description‘, ‘Schema‘, ‘dbo‘, ‘table‘, ‘Department‘, ‘column‘, ‘D_Name‘)

使用 sp_updateextendedproperty 系统存储过程修改扩展属性。

sp_updateextendedproperty 语法:

 1 sp_updateextendedproperty
 2     [ @name = ]{ ‘property_name‘ }
 3     [ , [ @value = ]{ ‘value‘ }
 4         [, [ @level0type = ]{ ‘level0_object_type‘ }
 5          , [ @level0name = ]{ ‘level0_object_name‘ }
 6               [, [ @level1type = ]{ ‘level1_object_type‘ }
 7                , [ @level1name = ]{ ‘level1_object_name‘ }
 8                      [, [ @level2type = ]{ ‘level2_object_type‘ }
 9                       , [ @level2name = ]{ ‘level2_object_name‘ }
10                      ]
11               ]
12         ]
13     ]  

返回代码值:

0(成功)或 1(失败)

使用方法示例:

1 --把表 Department 的扩展属性(表的描述)原值 ‘部门表’改为 ‘部门表测试修改’
2 execute sp_updateextendedproperty N‘MS_Description‘,N‘部门表测试修改‘,N‘Schema‘,N‘dbo‘,N‘table‘,N‘Department‘,null,null
3
4 --把表 Department 的列 D_Remark 的扩展属性(列的描述)原值 ‘部门描述’改为 ‘部门详细描述’
5 execute sp_updateextendedproperty N‘MS_Description‘,N‘部门详细描述‘,N‘Schema‘,N‘dbo‘,N‘table‘,N‘Department‘,N‘column‘,N‘D_Remark‘

使用 sp_dropextendedproperty 系统存储过程删除扩展属性。

sp_dropextendedproperty  语法:

 1 sp_dropextendedproperty
 2     [ @name = ] { ‘property_name‘ }
 3       [ , [ @level0type = ] { ‘level0_object_type‘ }
 4         , [ @level0name = ] { ‘level0_object_name‘ }
 5             [ , [ @level1type = ] { ‘level1_object_type‘ }
 6               , [ @level1name = ] { ‘level1_object_name‘ }
 7                 [ , [ @level2type = ] { ‘level2_object_type‘ }
 8                   , [ @level2name = ] { ‘level2_object_name‘ }
 9                 ]
10             ]
11         ]
12     ]   

返回代码值:

0(成功)或 1(失败)

使用方法示例:

1 --删除表 Department 的扩展属性(表的描述)
2 execute sp_dropextendedproperty N‘MS_Description‘,N‘Schema‘,N‘dbo‘,N‘table‘,N‘Department‘,null,null
3
4 --删除表 Department 的列 D_Remark 的扩展属性(列的描述)
5 execute sp_dropextendedproperty N‘MS_Description‘,N‘Schema‘,N‘dbo‘,N‘table‘,N‘Department‘,N‘column‘,N‘D_Remark‘

扩展属性分很多种,添加表和字段的描述只是其中一种扩展属性,具体请看参考。

参考:

https://technet.microsoft.com/zh-cn/library/ms180047.aspx

时间: 2024-12-19 21:02:51

SQL Server扩展属性的增、删、改、查的相关文章

Python---MySQL数据库之四大操作(增 删 改 查)

一.对数据库,表,记录---四大操作(增 删 改 查) 1.操作数据库 (1)对数据库(文件夹):进行增加操作 Create  database  库名; 例:  Create  database  db7 ; 查询库: show  databases; 结果: +-----------------------------+ | Database                   | +----------------------------+ | information_schema | |

ADO.NET 增 删 改 查

ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访问技术的基础 连接数据库基本格式:需要两个类1.数据库连接类 SqlConnection2.数据库操作类 SqlCommand 1.连接数据库写连接字符串,立马就要想到有4点要写完,1.连接哪台服务器,2.连接哪个数据库,3.连接用户名,4.密码string sql = "server=.(服务器i

好用的SQL TVP~~独家赠送[增-删-改-查]的例子

一.什么是TVP? 表值参数Table-Value Parameter (TVP) 提供一种将客户端应用程序中的多行数据封送到 SQL Server 的简单方式,而不需要多次往返或特殊服务器端逻辑来处理数据. 您可以使用表值参数来包装客户端应用程序中的数据行,并使用单个参数化命令将数据发送到服务器. 传入的数据行存储在一个表变量中,然后您可以通过使用 Transact-SQL 对该表变量进行操作. 可以使用标准的 Transact-SQL SELECT 语句来访问表值参数中的列值. 简单点说就是

SQL 增/删/改/查 (总结)

1.增 INSERT  INTO  表名  VALUES (" "," ") ; INSERT INTO 表名(字段)  VALUES(" "); 2. 删 DELETE   FROM 表名  WHERE  ... 3.改 UPDATE  表名 SET   ... WHERE  ... 4.查 SELECT × FROM  表名 ORDER BY ...

网站的增 / 删 / 改 / 查 时常用的 sql 语句

最近在学习数据库 php + mysql 的基本的 crud 的操作,记录碰到的坑供自己参考.crud中需要用到的sql语句还是比较多的,共包括以下几个内容: 查询所有数据 查询表中某个字段 查询并根据id升序排列 新增,在 url 中传参 新增,通过对象传参 删除 分页 修改 表结构: 查询并根据表id排序: //查询表 t_users 的数据并根据表 user_id 升序排列 $sql = "SELECT * FROM `t_users` ORDER BY user_id"; 查询

数据库基础学习4--表格的 增 删 改 查(简单查询与高级查询)

一.增 C:create 增加,创建,向数据库里面添加数据. insert into Fruit values('K009','苹果',3.0,'高青',90,'') insert into Fruit(Ids,Name,Price,Source,Numbers) values('K010','苹果',3.0,'高青',90) 二.改 U:update修改,从数据库表里面修改数据. update Fruit set Source='烟台' where Ids='K001' 三.删 D:delet

oracle 11g 建库 建表 增 删 改 查 约束

一.建库 1.(点击左上角带绿色+号的按钮) 2.(进入这个界面,passowrd为密码.填写完后点击下面一排的Test按钮进行测试,无异常就点击Connect) 二.建表 1-1. create table 表名1( Tid number(4) --primary key 列级约束(主键), Tname varchar(10) --ont null  非空约束,只能定义在列级约束, Tsex varchar2(2)--check (tsex='男'  or  tsex='女') 检查约束, T

1-24.list的增,删,改,查

增: 1.append(通过元素增加,默认加在最后print(a.append('hgf'))) 2.extend( 迭代的去增,就是把字符串的字符逐个去给这个列表加上去) 3.insert((按照索引去增加,前为索引,后为增加的字) 删: 1,pop(通过位置索引去删除) 2.del (通过索引,切片删除) 3.clear(清空列表) 4.remove(通过元素去删除) #返回值是什么意思? 改: a[]='i' print() 查: for i in a: print(a) 其他列表 1.s

创建-增-删-改-查

1.创建数组 2.增 1)push , unshift 2)splice var arr3 = [1,2,3,4,6]; var result = arr3.splice(2,0,"sdf") //第二个位置,删除0个元素,插入值 console.log(arr3) // [1, 2, "sdf", 3, 4, 6] 3)length var arr = [1,2]; arr[arr.length] = 3 console.log(arr); //  [1, 2,