SQL Server 2000中有两类数据类型:
Ø 系统数据类型
Ø 用户自定义数据类型
在讲系统数据类型之前,先要搞懂以下几个概念:
Ø 精度:指数值数据中所存储的十进制数据的总位数。
Ø 小数位数:指数值数据中小数点右边可以有的数字位数的最大值。
Ø 长度:指存储数据所使用的字节数。
具体SQL Server 2000支持的系统数据类型如下:
1、字符型
用于存储字符串,字符串中可包括字母、数字和其他特殊符号(如#、@、&等)。
Ø 固定长度(char):char[(n)]:长度为n个字节的固定长度的字符数据。n必须是一个介于1和8000之间的数值。若实际要存储的串长度不足n,则在串的尾部添加空格,以达到长度n。若实际的字符超出了定义长度,则超出部分被截断。
Ø 可变长度(varchar):varchar[(n)]:长度为n个字节的可变长度的字符数据。n必须是一个介于1和8000之间的数值。存储大小为输入数据的字节的实际长度,而不是n个字节。所输入的数据字符长度可以为零。
2、Unicode字符型
Unicode是“统一字符编码标准”,用于支持国际上非英语语种的字符数据的存储和处理。一个字符占两个字节。
Ø nchar(n):包含n个字符的固定长度Unicode数据的数据类型。n的值在1~4000之间。长度为2n字节。
Ø nvarchar(n):最多包含n个字符的可变长度Unicode数据的数据类型。n的值在1~4000之间。长度是所输入字符个数的两倍。
3、文本型
Ø text:表示最大长度为 231-1(2147483647)个字符,其数据的存储长度为实际字符个数。
Ø ntext:表示最大长度为 230-1(1073741823)个Unicode字符,其数据的存储长度为实际字符个数据的两倍。
4、整数型
Ø bigint:大整数,其精度为19,长度为8字节,从 –263 (-9223372036854775808)到263-1(9223372036854775807)的整型数据(所有数字)。
Ø int:整数,范围为 -231(-2147483648)到 231 – 1 (2147483647),其精度为10,长度为4字节。
Ø smallint:短整数,范围为 -215(-32768)到 215 – 1 (32767),精度为5,长度为2字节。
Ø tinyint:微短整数,范围为 0 到 255 ,精度为 3,长度为1字节。
5、精确数值型
由整数部分和小数部分构成,包括decimal和numeric两类。从功能上说两者完全等价,两者的惟一区别在于decimal不能用于带有identity关键字的列。
格式:numeric(p[,s])
其中,p为精度,s为小数位数,s的默认值为0。
例:要存储的数据为123.56,其数据类型可定义为numeric(5,2)
范围:从 -1038 +1 到 1038 –1 的固定精度和小数位的数字数据,存储长度随精度变化而变化,5~17字节。
6、浮点型
近似数值型。可用于处理取值范围非常大且对精确度要求不高的数值量。
Ø float[(n)]:从 -1.79E + 308 到 1.79E + 308 的浮点精度数字。数据精度和存储大小由n确定,范围为1~53。默认精度为15位有效数字,存储长度为8字节。
Ø real:从 -3.40E + 38 到 3.40E + 38 的浮点精度数字。数据精度为7位有效数字,使用4字节存储数据。
不过两种都用科学计数法表示数据。
7、货币型
专门用于处理货币的数据类型。用十进制数表示货币值。
Ø money:从 -263 到 263 –1,精度为19,小数位数为4,长度为8字节。
Ø smallmoney:从 -231 到 231 –1 ,精度为10,小数据位数为4,长度为4字节。
当向表中插入数值时,必须在数据前面加上货币表示符号($),并且中间不能有符号(,),若货币值为负数,则需要在符号后面加上负号(-)。
8、位型
bit:相当于其他语言中的逻辑型数据,它只存储0或1,长度为1字节。数据0,表示值为0,非0时,其值为1。且bit类型数据,不允许为空值,也不允许对其建立索引。
9、二进制型
表示位数据流。
Ø binary[(n)]:固定长度的n个字节二制数据。n取值范围为1~8000。存储长度为n+4字节。若实际输入不足n,则用0填充。
Ø varbinary[(n)]:n个字节变长二进制数。 n取值范围为1~8000 。存储长度为实际输入数据长度加上4个字节。
10、日期时间类型
用于存储日期和时间信息。
Ø datetime:范围从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒(或3.33毫秒)。长度为8字节,日期和时间分别使用4字节存储。
Ø smalldatetime:范围从1900年1月1日到2079年6月 6日的日期和时间数据,精确到分钟。长度为4字节,日期和时间分别使用2字节存储。
11、时间戳型
timetamp:每当对该表加入新行或修改已有行时,都由系统自动将一个计数器加到该列,即将原来的时候戳值上加一个增量,表示SQL Server在一行上的活动顺序。
一个表只能有一个timetamp列,长度为8字节。
12、图像数据类型
image:用于存储图片、照片等。实际存储的是可变长度二进制数据,介于0~231-1字节之间。
13、其他数据类型
Ø cursor:游标的引用。
Ø sql_variant:一种存储 SQL Server 支持的各种数据类型(text、ntext、timestamp 和 sql_variant 除外)值的数据类型。
Ø table:一种特殊的数据类型,存储供以后处理的结果集。
3.1.2
创建用户定义数据类型
1、使用企业管理器创建用户定义的数据类型
2、使用系统存储过程sp_addtype创建用户定义数据类型
提供的参数:名称、新数据类型所依据的系统数据类型、数据类型是否允许空值。
语法格式:
sp_addtype [@typename=] 自定义的数据类型名称,
[@phystype=] 所依据的系统数据类型
[,[@nulltype=] 处理空值的方式 ]
[,[@owner=] 新数据类型的创建者或所有者 ]
3.1.3
创建表
1、使用企业管理器创建表
2、使用T-SQL语句创建表
语法格式:
CREATE TABLE 表名称
( 列定义, 表级完整性定义)
ON 指定存储表的数据库文件组
TEXTIMAGE_ON 说明text、ntext、image列数据的文件组名
列定义格式:列名 列数据类型 列的约束
例:student数据库中创建表stu(学号,姓名,年龄,课程,成绩),T-SQL语句如下:
create table stu
(学号 char(8)
primary key,
姓名 char(10)
not null,
年龄 tinyint null,
课程 varchar(30) null,
成绩 numeric(4,1) default 0 )
3.2
修改表
3.2.1
在企业管理器中修改表
3.2.2
用
T-SQL
语句修改表
语法格式:
ALTER TABLE
表名
ALTER COLUMN 列名 列类型 列约束
ADD 列定义
DROP COLUMN
列名
3.3
删除表
3.3.1
在企业管理器中删除表
3.3.2
用
T-SQL
语句删除表
语法:
DROP TABLE
表名称
3.4
表的数据操作
3.4.1
向表中插入数据
INSERT INTO 表名 VALUES(记录值)
3.4.2
修改表中数据
UPDATE 表名 SET
3.4.3
删除表中数据
DELETE 表名
注:与TRUNCATE TABLE 语句的区别。