Page 1
2023年4月22日 星期六SQL Server 2000 实用教程
第 2 章 SQL Server 2000 数据类型
当我们定义数据表的字段、声明程序中的变量时,都需要为它们设置一个数据类型,目的是指定该字段或变量所存放的数据是整数、字符串、货币、或是其他类型的数据,以及会用多少空间来存储数据。为列选择合适的数据类型非常重要,因为其影响着系统的空间利用、性能、可靠性和是否易于管理等特性。因此,在开发一个数据库系统之前,最好能够真正理解各种数据类型的存储特征。 SQL Server 中的数据类型可分为系统内置数据类型和用户自定义数据类型两种。
Page 2
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 在绝大多数编程环境中,数据类型由系
统定义,这类数据类型通常称之为系统数据类型。
Page 3
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 2.1.1 字符数据类型 字符数据的类型包括 Char , Varchar
和 Text 。字符数据是由任何字母、符号和数字任意组合而成的数据。
Char 是定长字符数据类型,其长度最多为 8KB ,默认为 1
Varchar 是变长字符数据类型,其长度不超过 8KB
超过 8KB 的 ASCII 数据可以使用 Text数据类型存储。
Page 4
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 2.1.2 数值型数据类型 数值数据只包含数字,例如正数和负数、
小数(浮点数)和整数。包括:bigint , int , smallint , tinyint , decimal , numeric , float 和 real 。
Page 5
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 2.1.2 数值型数据类型 整数由正整数和负整数组成,例如 18 、 25 、 -3 和 28813 。
在 Micrsoft SQL Server 中,整数存储的数据类型是bigint , int , smallint 和 tinyint 。 bigint 为大整数,该数据类型存储数据的范围大于 int , int 为整型,该数据类型存储数据的范围大于 smallint 数据类型存储数据的范围,而 smallint 为短整型,该数据类型存储数据的范围大于tinyint 数据类型存储数据的范围, tinyint 为微短整型。使用 bigint 数据类型存储数据的长度为 8 个字节,数据范围为 -263~263-1 ,即 -9223372036854775808 ~9223372036854775807 (每一个值要求 8 各字节存储空间)。 int 数据类型存储数据的范围为 -231 ~ 231-1 ,即 -2147483648 ~ 2147483647 (每一个值要求 4 个字节存储空间)。使用 smallint 数据类型时,存储数据的范围为 -215 ~ 215-1 ,即 -32768 ~ 32767 (每一个值要求 2 个字节存储空间)。使用 Tinyint 数据类型时,存储数据的范围是从 0 到 255 (每一个值要求 1 个字节存储空间)。
Page 6
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 2.1.2 数值型数据类型 精确数值型数据由整数部分和小数部分构成,其所有的数
字都是有效位,能够以完整的精度存储十进制数。在SQL Server 中精确数值型是 decimal 和 numeric ,两者唯一的区别在于 decinal 不能用于带有 identity 关键字的列。这种数据类型的存储范围取决于一个确定的数字表达法,而不是一个固定的数值。表达方式: decimal( p,s ),其中 p :指定精度或对象能够控制的数字个数;s :指定可放到小数点右边的小数位数或数字个数, p 可指定的范围为 1 ~ 38 , s 可指定的范围最少为 0 ,最多不可超过 p 。
例如,如果定义 decimal ( 8,6 ),那么该类型的取值范围是 -99.999999 ~ 99.999999 。
Page 7
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 2.1.2 数值型数据类型 在 SQL Server 中,近似小数数据的数据
类型是 float 和 real 。例如,三分之一这个分数记作 .3333333 ,当使用近似数据类型时不能准确表示
Page 8
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 2.1.3 货币型数据类型 货币数据表示正的或者负的货币数量。 在 Microsoft SQL Server 中,货币数据
的数据类型是 Money 和Smallmoney , Money 数据类型要求 8个存储字节, Smallmoney 数据类型要求4 个存储字节。
Page 9
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 2.1.4 时间/日期数据类型 日期和时间数据类型用于存储日期和时间
信息,包括 Datetime 和 Smalldatetime 两种类型。
日期和时间数据类型由有效的日期和时间组成,不存在只存储时间数据类型或日期数据类型。
Page 10
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 日期的格式可以设定。设置日期格式的命令如下: Set DateFormat {format | @format _var} 其中, format | @format_var 是日期的顺序。
有效的参数包括: MDY 、 DMY 、 YMD 、 YDM 、MYD 和 DYM 。在默认情况下,日期格式为MDY 。
例如,当执行 Set DateFormat YMD 之后,日期的格式为年月日形式;当执行Set DateFormat DMY 之后,日期的格式为日月年形式。
注:该设置仅用在将字符串转换为日期值时的解释中。它对日期的显示没有影响
Page 11
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 SQL Server 中常用的日期和时间表示格式
如下: 分隔符可用’ /’ 、’ -’ 或’ .’ ,例
如:’ 4/15/2005’ 、’ 4-15-05’ 或’ 4.15.2005’
字母日期格式:’ April 15,2005’ 不用分隔符:’ 20050501’ 时 : 分 : 秒 : 毫秒: 08:05:25:28 时 : 分 AM|PM : 05:08AM 、 08:05PM
Page 12
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 2.1.5 二进制数据类型 二进制数据类型表示的是位数据流,包
括 Binary (固定长度)和 Varbinary (可变长度)两种,可用来输入和显示前缀为 0x 的十六进制值。
Page 13
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 2.1.6 其他数据类型 Image 数据类型中存储的数据是以位字符串存
储的,不是由 SQL Server 解释的,必须由应用程序来解释。
Timestamp 是时间戳数据类型 Uniqueidentifier 由 16 字节的十六进制数字
组成,表示一个全局唯一的标识符 Bit 数据类型由 1 或者 0 组成 Unicode 数据类型包括 Nchar , Nvarchar 和
Ntext 。 Unicode 是“统一字符编码标准”,用于支持国际上非英语种的字符数据的存储和处理
Page 14
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 以上介绍了大部分的系统数据类型,建立
数据表时,我们会设置各个字段名称以及数据类型,在输入数据时, SQL Server会根据数据类型来检查输入的值是否符合要求,如果不符,便会出现错误信息提醒操作者。有时由于数据表中的部分字段没有数据可填入(例如员工表中有的员工没有电话)而发生错误,要想避免此类错误,我们可以利用 NULL 值来解决。
Page 15
2023年4月22日 星期六SQL Server 2000 实用教程
2.1 系统数据类型 NULL 值不是 0 也不是空格,更不是填入
字符串“ NULL” ,而是表示“不知道”、“不确定”或“暂时没有数据”的意思。比如在员工表中,可以使用 NULL 值来代替部分员工的电话号码,表示该员工的电话号码暂时不知道。
当某一字段可以接受 NULL 值时,表示该字断的值可以不要输入。如果某个字段的值一定要输入才又意义时,则可以设置为NOT NULL 。
Page 16
2023年4月22日 星期六SQL Server 2000 实用教程
2.2 用户自定义数据类型 用户定义的数据类型基于
在 Microsoft SQL Server 中提供的数据类型。当几个表中必须存储同一种数据类型时,并且为保证这些列有相同的数据类型、长度和可空性时,可以使用用户定义的数据类型。例如,可定义一种称为 postal_code 的数据类型,用于限定邮政编码的数据类型,它基于 Char 数据类型。
当创建用户自定义的数据类型时,必须提供三个参数:数据类型的名称、所基于的系统数据类型和数据类型是否允许空值。
Page 17
2023年4月22日 星期六SQL Server 2000 实用教程
2.2 用户自定义数据类型 创建用户定义的数据类型可以使用
Transact-SQL语句。系统存储过程sp_addtype 可以来创建用户定义的数据类型。其语法格式如下:
sp_addtype {新数据类型名 },[, 系统数据类型 ][,'null_type']
Page 18
2023年4月22日 星期六SQL Server 2000 实用教程
2.2 用户自定义数据类型 【例 2.1】创建一个 uname 用户定义数
据类型 , 其基于的系统数据类型是变长为8 的字符,不允许空。
Use Northwind Exec sp_addtype uname,'Varchar(8)',
'Not Null '
Page 19
2023年4月22日 星期六SQL Server 2000 实用教程
2.2 用户自定义数据类型 2.删除用户定义的数据类型 当用户定义的数据类型不需要时,可删除。删除用户定义的数据类型的命令是
sp_droptype {' 数据类型名 '} 【例 2.4】删除用户定义数据类型 uname Use Northwind Exec sp_droptype 'uname '
Page 20
2023年4月22日 星期六SQL Server 2000 实用教程
本章小结
本章重点介绍了 SQL Server 2000 数据类型的分类、使用方法和使用时的注意事项。表 2.1 列出了 SQL Server 常见的数据类型。
Page 21
2023年4月22日 星期六SQL Server 2000 实用教程
本章小结 类型 数据类型 长度
字符数据类型 CharVarcharText
1 ~ 8000个字符, 1 个字符占 1 个字节1 ~ 8000个字符, 1 个字符占 1 个字节1 ~ 231-1个字符, 1 个字符占 1 个字节
整型 BigintIntSmallintTinyintBit
8 字节, -263 ~ 263-14 字节, -231 ~ 231-12 字节, -215 ~ 215-11 字节, 0 ~ 2550 , 1 ,或 NULL
精确数值类型 DecimalNumeric
2 ~ 17字节,视精确度而定2 ~ 17字节,视精确度而定
近似数值类型 FloatReal
8 字节4 字节
货币型数据类型 MoneySmallmoney
8 字节4 字节
时间/日期数据类型 DatetimeSmalldatetime
8 字节4 字节
类型 数据类型 长度
二进制数据类型 BinaryVarbinary
1 ~ 8000个字节,存储时需另外增加 4 字节1 ~ 8000个字节,存储时需另外增加 4 字节
图像型 Image 0 ~ 2×109字节
标记型 TimestampUniqueidentifier
8 字节16字节
Unicode字符型 NcharNvarcharNtext
1 ~ 4000个字符, 1 个字符 2 个字节1 ~ 4000个字符, 1 个字符 2 个字节1 ~ 230-1个字符, 1 个字符 2 个字节