在SQL Server 2008中,根据每个局部变量、列、表达式和参数对应的数据特性,都有各自的数据类型。
SQL Server 2008支持两类数据类型:系统数据类型和用户自定义数据类型。
系统数据类型又称基本数据类型。
在SQL Server 2008中,除提供的系统数据类型外,用户还可以自己定义数据类型。用户自定义数据类型根据基本数据类型进行定义,可将一个名称用于一个数据类型,能更好说明该对象中保存值的类型,方便用户使用。例如student表和score表都有stno列,该列应有相同的类型,即均为字符型值、长度为8,不允许为空值,为了含义明确、使用方便,由用户定义一个数据类型,命名为:school_student_num,作为 student表和score表的stno列的数据类型。
创建用户自定义数据类型应有以下三个属性:
● 新数据类型的名称。
● 新数据类型所依据的系统数据类型。
● 为空性。
使用CREATE TYPE 语句创建,语法格式如下:
CREATE TYPE [ schema_name. ] type_name FROM base_type [ ( precision [ , scale ] ) ] [ NULL | NOT NULL ] [ ; ]说明:
type_name为指定用户自定义数据类型名称,base_type为用户自定义数据类型所依据的系统数据类型。
例如,创建用户自定义数据类型 school_student_num。
CREATE TYPE school_student_num FROM char(4) NOT NULL该语句创建了用户自定义的数据类型 school_student_num。
使用 DROP TYPE 语句删除。语法格式如下:
DROP TYPE [ schema_name. ] type_name [ ; ]例如,删除自定义数据类型 school_student_num 。
采用命令方式,使用用户自定义数据类型school_student_num定义student表stno列的语句如下:
USE stsc CREATE TABLE student ( stno school_student_num NOT NULL PRIMARY KEY, stname char(8) NOT NULL, stsex char(2) NOT NULL, stbirthday date NOT NULL, specialist char(12) NULL, tc int NULL )这里,使用自定义数据类型的方式和我们使用系统数据类型的方式是一致的。
创建自定义表数据类型使用CREATE TYPE语句,其语法格式如下:
CREATE TYPE [ schema_name. ] type_name AS TABLE ( <column_definition> [ <table_constraint> ] [ ,...n ] ) [ ; ]说明:
<column_definition> 是对列的描述,包含列名、数据类型、为空性、约束等。
<table_constraint>定义表的约束。
例如,创建用户自定义数据类型,包含课程表的所有列
USE stsc CREATE TYPE course_tabletype AS TABLE ( cno char(3) NOT NULL PRIMARY KEY, cname char(16) NOT NULL, credit int NULL, tno char(6) NULL )上面的语句,创建了自定义的数据类型course_tabletype , 包含课程号,课程名,学分,教师编号等列极其数据类型,为空性,主键约束等。