一 系统数据类型
1. 整型数据类型
2. 浮点数据类型
3. 字符数据类型
4. 日期和时间数据类型
5. 文本和图形数据类型
1. 整型数据类型
整型数据类型是最常用的数据类型之一,它主要用来存储数值,可以直接进行数据运算,而不必使用函数转换。
int(integer):int(或integer)数据类型可以存储从-231(-2,147,483,648)到231-1(2,147,483,647)范围之间的所有正负整数。
Smallint:可以存储从-215(-32,768)到215-1范围之间的所有正负整数 。
Tinyint:可以存储从0到255范围之间的所有正整数。
2. 浮点数据类型
浮点数据类型用于存储十进制小数。浮点数值的数据在SQL Server中采用只入不舍的方式进行存储 。
Real:可以存储正的或者负的十进制数值,最大可以有7位精确位数。
Float:可以精确到第15位小数,其范围从-1.79E-308到1.79E+308。
Decimal和numeric:Decimal数据类型和numeric数据类型完全相同,它们可以提供小数所需要的实际存储空间,但也有一定的限制,可以用2到17个字节来存储从-1038-1到1038-1之间的数值。
3. 字符数据类型
字符数据类型可以用来存储各种字母、数字符号和特殊符号。
Char:其定义形式为char(n),每个字符和符号占用一个字节的存储空间。
Varchar:其定义形式为varchar(n)。用char数据类型可以存储长达255个字符的可变长度字符串 。
Nchar:其定义形式为nchar(n)。
Nvarchar:其定义形式为nvarchar(n)。
4. 日期和时间数据类型
Datetime:用于存储日期和时间的结合体 。它可以存储从公元1753年1月1日零时起到公元9999年12月31日23时59分59秒之间的所有日期和时间 。
Smalldatetime:与datetime数据类型类似,但其日期时间范围较小,它存储从1900年1月1日到2079年6月6日内的日期。
5. 文本和图形数据类型
Text:用于存储大量文本数据,其容量理论上为1到231-1(2,147,483,647)个字节,但实际应用时要根据硬盘的存储空间而定。
Ntext:与text数据类型类似,存储在其中的数据通常是直接能输出到显示设备上的字符,显示设备可以是显示器、窗口或者打印机。
Image:用于存储照片、目录图片或者图画,其理论容量为231-1(2,147,483,647)个字节。
6. 货币数据类型
Money:用于存储货币值,存储在money数据类型中的数值以一个正数部分和一个小数部分存储在两个4字节的整型值中,存储范围为-922337213685477.5808到922337213685477.5808,精度为货币单位的万分之一。
Smallmoney:与money数据类型类似,但其存储的货币值范围比money数据类型小,其存储范围为-214748.3468到214748.3467。
7. 位数据类型
Bit:称为位数据类型,其数据有两种取值:0和1,长度为1字节。
8. 二进制数据类型
Binary:其定义形式为binary(n),数据的存储长度是固定的,即n+4字节,当输入的二进制数据长度小于n时,余下部分填充0。
Varbinary:其定义形式为varbinary(n),数据的存储长度是变化的,它为实际所输入数据的长度加上4字节。其它含义同binary。
9. 特殊数据类型
Timestamp:亦称时间戳数据类型,它提供数据库范围内的唯一值,反应数据库中数据修改的相对顺序,相当于一个单调上升的计数器。 Uniqueidentifier:用于存储一个16字节长的二进制数据类型,它是SQL Server根据计算机网络适配器地址和CPU时钟产生的唯一号码而生成的全局唯一标识符代码(Globally Unique Identifier,简写为GUID)。
10. 新增数据类型
Bigint:用于存储从-263(-9,223,372,036,854,775,807)到263-1(9,223,372,036,854,775,807)之间的所有正负整数。
sql_variant:用于存储除文本、图形数据和timestamp类型数据外的其它任何合法的SQL Server数据。
table:用于存储对表或者视图处理后的结果集。这种新的数据类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。
二自定义数据类型
1. 使用企业管理器(Enterprise Manager)创建用户自定义数据类型。
2. 利用系统存储过程创建用户自定义数据类型 。
系统存储过程sp_addtype为用户提供了T_SQL语句创建自定义数据类型的途径,其语法形式如下:
sp_addtype [@typename=] type,
[@phystype=] system_data_type
[, [@nulltype=] ‘null_type’]
[, [@owner=] ‘owner_name’]
如何保证数据完整性
声明完整性(Declaritive Data Integrity)
在表定义时声明
使用约束(default,check,referential,primary key,unique,foreign key)、缺省值和规则来实现
由SQL Server自动加以保证
过程完整性(Procedure Data Integrity)
Client
在Server端使用trigger来实现