6.2.2 自定义数据类型
SQL Server 2017为用户提供了两种创建自定义数据类型的方法:一种是使用对象资源管理器,一种是使用T-SQL语句。
1.使用对象资源管理器创建
自定义数据类型与具体的数据库有关,因此,在创建自定义数据类型之前首先需要选择要创建数据类型所在的数据库,具体操作步骤如下:
步骤01 打开SSMS工作界面,在【对象资源管理器】窗格中选择需要创建自定义数据类型的数据库,如图6-1所示。
图6-1 选择数据库
步骤02 依次打开【mydb】→【可编程性】→【类型】节点,右击【用户定义数据类型】节点,在弹出的快捷菜单中选择【新建用户定义数据类型】菜单命令,如图6-2所示。
图6-2 【新建用户定义数据类型】命令
步骤03 打开【新建用户定义数据类型】窗口,在【名称】文本框中输入需要定义的数据类型的名称,这里输入新数据类型的名称为“address”,表示存储一个地址数据值,在【数据类型】下拉列表框中选择char的系统数据类型,【长度】指定为8000,如果用户希望该类型的字段值为空,可以选择【允许NULL值】复选框,其他参数不做更改,如图6-3所示。
图6-3 【新建用户定义数据类型】窗口
步骤04 单击【确定】按钮,完成用户定义数据类型的创建,即可看到新创建的自定义数据类型,如图6-4所示。
图6-4 新创建的自定义数据类型
2.使用T-SQL语句创建
在SQL Server 2017中,除了使用图形界面创建自定义数据类型外,还可以使用系统数据类型sp_addtype来创建用户自定义数据类型。其语法格式如下:
sp_addtype [@typename=] type, [@phystype=] system_data_type [, [@nulltype=] 'null_type']
各个参数的含义如下:
• type:用于指定用户定义的数据类型的名称。
• system_data_type:用于指定相应的系统提供的数据类型的名称及定义。注意,未能使用timestamp数据类型,当所使用的系统数据类型有额外说明时,需要用引号将其括起来。
• null_type:用于指定用户自定义的数据类型的null属性,其值可以为“null”“not null”或“nonull”。默认时与系统默认的null属性相同。用户自定义的数据类型的名称在数据库中应该是唯一的。
【例6.1】在mydb创建数据库中,创建用来存储邮政编号信息的“postcode”用户自定义数据类型。打开【查询编辑器】窗口,在其中输入创建用户自定义数据类型的T-SQL语句:
sp_addtype postcode,'char(128)','not null'
单击【执行】按钮,即可完成用户定义数据类型的创建,并在【消息】窗格中显示命令已成功完成的信息提示,如图6-5所示。
图6-5 使用系统存储过程创建用户定义数据类型
执行完成之后,刷新【用户定义数据类型】节点,将会看到新增的数据类型,如图6-6所示。
图6-6 新建用户定义数据类型