数据类型是一种属性,用于指定对象可保存的数据类型。SQL Server 2017中支持多种数据类型,包括字符类型、数值类型以及日期时间类型等基本数据类型,还包括用户自定义数据类型。
SQL Server 2017提供的基本数据类型按照数据的表现方式及存储方式的不同可以分为整数数据类型、货币数据类型、浮点数据类型等。通过使用这些数据类型,在创建数据表的过程中,SQL Server会自动限制每个系统数据类型的值的范围,当插入数据库中的值超过了数据类型允许的范围时,SQL Server就会报错。
整数数据类型是常用的一种数据类型,主要用于存储整数,可以直接进行数据运算而不必使用函数转换,如表6-2所示。
表6-2 整数数据类型
浮点数据类型用于存储十进制小数。浮点数据为近似值,浮点数值的数据在SQL Server中采用只入不舍的方式进行存储,即当且仅当要舍入的数是一个非零数时,对其保留数字部分的最低有效位上的数值加1,并进行必要的进位,如表6-3所示。
表6-3 浮点数据类型
字符数据类型也是SQL Server中最常用的数据类型之一,用来存储各种字母、数字符号和特殊符号。在使用字符数据类型时,需要在其前后加上英文单引号或者双引号,如表6-4所示。
表6-4 字符数据类型
日期和时间数据类型用于存储日期类型和时间类型的组合数据,如表6-5所示。
表6-5 日期和时间数据类型
图像和文本数据类型用于存储大量的字符及二进制数据,如表6-6所示。
表6-6 图像和文本数据类型
货币数据类型用于存储货币值,使用时在数据前加上货币符号,不加货币符号的情况下默认为“¥”,如表6-7所示。
表6-7 货币数据类型
二进制数据类型用于存储二进制数,如表6-8所示。
表6-8 二进制数据类型
除上述介绍的数据类型外,SQL Server还提供有大量其他数据类型供用户进行选择,常用的其他数据类型如表6-9所示。
表6-9 其他数据类型
SQL Server 2017为用户提供了两种创建自定义数据类型的方法:一种是使用对象资源管理器,一种是使用T-SQL语句。
自定义数据类型与具体的数据库有关,因此,在创建自定义数据类型之前首先需要选择要创建数据类型所在的数据库,具体操作步骤如下:
步骤01 打开SSMS工作界面,在【对象资源管理器】窗格中选择需要创建自定义数据类型的数据库,如图6-1所示。
步骤02 依次打开【mydb】→【可编程性】→【类型】节点,右击【用户定义数据类型】节点,在弹出的快捷菜单中选择【新建用户定义数据类型】菜单命令,如图6-2所示。
图6-1 选择数据库
图6-2 【新建用户定义数据类型】命令
步骤03 打开【新建用户定义数据类型】窗口,在【名称】文本框中输入需要定义的数据类型的名
称,这里输入新数据类型的名称为“address”,表示存储一个地址数据值,在【数据类型】下拉列表框中选择char的系统数据类型,【长度】指定为8000,如果用户希望该类型的字段值为空,可以选择【允许NULL值】复选框,其他参数不做更改,如图6-3所示。
图6-3 【新建用户定义数据类型】窗口
步骤04 单击【确定】按钮,完成用户定义数据类型的创建,即可看到新创建的自定义数据类型,如图6-4所示。
图6-4 新创建的自定义数据类型
在SQL Server 2017中,除了使用图形界面创建自定义数据类型外,还可以使用系统数据类型sp_addtype来创建用户自定义数据类型。其语法格式如下:
sp_addtype [@typename=] type, [@phystype=] system_data_type [, [@nulltype=] 'null_type']
各个参数的含义如下:
【例6.1】在mydb创建数据库中,创建用来存储邮政编号信息的“postcode”用户自定义数据类型。打开【查询编辑器】窗口,在其中输入创建用户自定义数据类型的T-SQL语句:
sp_addtype postcode,'char(128)','not null'
单击【执行】按钮,即可完成用户定义数据类型的创建,并在【消息】窗格中显示命令已成功完成的信息提示,如图6-5所示。
执行完成之后,刷新【用户定义数据类型】节点,将会看到新增的数据类型,如图6-6所示。
图6-5 使用系统存储过程创建用户定义数据类型
图6-6 新建用户定义数据类型
当不再需要用户自定义的数据类型时,可以将其删除。删除的方法有两种:一种是在对象资源管理器中删除,一种是使用系统存储过程sp_droptype来删除。
具体操作步骤如下:
步骤01 在对象资源管理器中选择需要删除的数据类型,然后右击鼠标,在弹出的快捷菜单中选择【删除】菜单命令,如图6-7所示。
图6-7 选择【删除】菜单命令
步骤02 打开【删除对象】窗口,单击【确定】按钮,即可删除自定义数据类型,如图6-8所示。
使用sp_droptype来删除自定义数据类型,该存储过程从systypes删除别名数据类型,语法格式如下:
sp_droptype type
type为用户定义的数据类型。
图6-8 【删除对象】窗口
【例6.2】在mydb数据库中,删除address自定义数据类型。打开【查询编辑器】窗口,在其中输入删除用户自定义数据类型的T-SQL语句:
sp_droptype address
单击【执行】按钮,即可完成删除操作,并在【消息】窗格中显示命令已成功完成的信息提示,如图6-9所示。
执行完成之后,刷新【用户定义数据类型】节点,将会看到删除的数据类型消失,如图6-10所示。
图6-9 执行T-SQL语句
图6-10 【对象资源管理器】窗口
注意
数据库中正在使用的用户定义数据类型,不能被删除。