decimal[pl[,s]和 numerical s],其中p表示精度,s表示小数位数(常 四舍五入) 两种数据类型可以相互转换(以前只有 numerIc可以带 identity关 键字,现在不同了)。 占9 Bytes精度可达28位 缺省p时表示10,缺省s时表示0(不能只缺省p而给出s!) create table decimal ex(编号 int identity(2,4),姓名char(8),工资d insert decimal ex values(张三,1200.82673) insert decimal ex values(张四;980) insert decimal ex valuest(张五,180095) select from decimal ex 4.货币类型 money(8Bytes,-263---263-1) smallmoney(4Bytes,-231---231-1) 均精确到小数点后4位(四舍五入)。 计算时是先按照整数进行算术运算,再将小数点移到正确的位 置。故不同于foat、 real, numeric、 decimal的计算 插入数据时,数字间不能用逗号,只有通过字符并转换(用 CAST)才行。 在SQL语句中表示货币时可以带$标志符 例: create table x(编号 t(2,4),姓名char( 工资 money) insert money ex value(张三,1200.82673) insert money ex values(‘张四,980) insert money ex value(张五,$1800.95) insert money ex values( 5k fi, CAST($1, 800.95'AS money) select from money ex
11 decimal[p[,s]]和 numeric[p[,s]],其中 p 表示精度,s 表示小数位数(常 四舍五入)。 ⚫ 两种数据类型可以相互转换(以前只有 numeric 可以带 identity 关 键字,现在不同了)。 ⚫ 占 9Bytes。精度可达 28 位。 ⚫ 缺省 p 时表示 10,缺省 s 时表示 0(不能只缺省 p 而给出 s!) 例: create table decimal_ex(编号 int identity(2,4) , 姓名 char(8), 工资 decimal(11,4)) insert decimal_ex values('张三',1200.82673) insert decimal_ex values('张四',980) insert decimal_ex values('张五',1800.95) select * from decimal_ex 4.货币类型 money(8Bytes,-2 63 ---2 63 -1)、smallmoney(4Bytes,-2 31 ---2 31 -1) ⚫ 均精确到小数点后 4 位(四舍五入)。 ⚫ 计算时是先按照整数进行算术运算,再将小数点移到正确的位 置。故不同于 float、real、numeric、decimal 的计算。 ⚫ 插入数据时,数字间不能用逗号,只有通过字符并转换(用 CAST)才行。 ⚫ 在 SQL 语句中表示货币时可以带$标志符。 例: create table money_ex(编号 int identity(2,4) , 姓名 char(8), 工资 money) insert money_ex values('张三',1200.82673) insert money_ex values('张四',980) insert money_ex values('张五',$1800.95) insert money_ex values('张五',CAST('$1,800.95' AS money)) select * from money_ex
特别注意:只有char类、 binary类、精确数值类的数据类型后可带 小括号以进一步说明长度或精度,其它数据类型均不能带小括号除char 类、 binary类外,所有数据类型均占固定的字节数。 (八)、 sql variant数据类型 sql variant数据类型是 SQL Server2000中新增的功能。通过使用 sql variant数据类型,可以在一个单独的字段、参数或变量中存储不同类 型的数据值。用于存储除text、 Image和 timestamp类型数据外的其它任 何合法的 SQL Server数据。 例如:一个定义为 sql variant数据类型的字段中能够同时保存int、 decimal char、 binary和 nchar等多种类型的数据值 I variant数据类型遵循的规则:常规赋值;使用 sql variant数据 类型; sql variant数据类型的比较 函数与 sql variant数据:如果需要使用 sql variant参数,或需要使 用函数返回 sql variant类型的值,必须留意并不是所有的函数都支持使用 sql variant类型的参数,以及返回 sql variant类型的值。 不支持 sql variant数据的语句有:在使用LKE语句时不支持 qI variant数据的字段;在全文检索中不支持 sql variant数据的字段;在 进行数字或字符串串联运算时,不能使用 sql_variant的字段 例 CREATE TABLE特殊数据( Sql variant data sql_variant) INSERT INTO特殊数据 ALUESI( This is a sql variant data type test) INSERTINTO特殊数据 VALUES(123456) INSERT INTO特殊数据 VALUES( April 1:5,1998) GO SELECT*FROM特殊数据 (九)、 table数据类型 用于存储对表或者视图处理后的结果集。这种新的数据类型使得变 量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷 是 SQL Server新增的数据类型,类似于一个临时表,可以用于存储一个 结果集以便以后处理。该类型只能用于定义 table类型的局部变量和用 户定义函数的返回值
12 特别注意:只有 char 类、binary 类、精确数值类的数据类型后可带 小括号以进一步说明长度或精度,其它数据类型均不能带小括号。除 char 类、binary 类外,所有数据类型均占固定的字节数。 (八)、sql_variant 数据类型 sql_variant 数据类型是 SQL Server2000 中新增的功能。通过使用 sql_variant 数据类型,可以在一个单独的字段、参数或变量中存储不同类 型的数据值。用于存储除 text、image 和 timestamp 类型数据外的其它任 何合法的 SQL Server 数据。 例如:一个定义为 sql_variant 数据类型的字段中能够同时保存 int、 decimal、char、binary 和 nchar 等多种类型的数据值。 sql_variant 数据类型遵循的规则:常规赋值;使用 sql_variant 数据 类型;sql_variant 数据类型的比较。 函数与 sql_variant 数据:如果需要使用 sql_variant 参数,或需要使 用函数返回 sql_variant 类型的值,必须留意并不是所有的函数都支持使用 sql_variant 类型的参数,以及返回 sql_variant 类型的值。 不支持 sql_variant 数据的语句有:在使用 LIKE 语句时不支持 sql_variant 数据的字段;在全文检索中不支持 sql_variant 数据的字段;在 进行数字或字符串串联运算时,不能使用 sql_variant 的字段。 例: CREATE TABLE 特殊数据 ( Sql_variant_data sql_variant ) INSERT INTO 特殊数据 VALUES('This is a sql_variant data type test') INSERT INTO 特殊数据 VALUES(123456) INSERT INTO 特殊数据 VALUES('April 15,1998') G0 SELECT * FROM 特殊数据 (九)、table 数据类型 用于存储对表或者视图处理后的结果集。这种新的数据类型使得变 量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。 是 SQL Server 新增的数据类型,类似于一个临时表,可以用于存储一个 结果集以便以后处理。该类型只能用于定义 table 类型的局部变量和用 户定义函数的返回值
DECLARE @Table Example TABLE (num int PRIMARY KEY, memo char(50)) INSERTINTO @Table Example VALues (1, this is a') INSERT INTO @Table Example VALUEs (2, table data type example -从临时表中检索 SELECt* FROM @Table Example 、系统表 systypes 系统的数据类型,它们存储在 systypes表中。在 systypes表中既包括 系统数据类型,也包括用户定义的数据类型( sysname相当于 varchar(256), 是一种特殊的用户自定义类型)。 四、用户定义的数据类型 用户定义的数据类型并不是真正的新数据类型,它是描述已有数据 类型一种方式。可通过企业管理器或TSQL语句创建和删除。 TSQL语句创建和删除:使用系统存储过程进行创建和删除: sp addtype usertypename, systemtypename', not null sp droptype usertypename 例1:创建 Exec sp addtype telephone, ' varchar(24), not null 然后,可像其它标准数据类型一样在 create table等中使用 create table usertype ex(pid int identity, name char(8), tel telephone) insert usertype ex values(张三,666383874) insert usertype ex value'李四,6856658) select from usertype ex 例2:删除 exec sp droptype telphone
13 例: DECLARE @Table_Example TABLE (num int PRIMARY KEY, memo char(50)) INSERT INTO @Table_Example VALUES (1,'this is a') INSERT INTO @Table_Example VALUES (2, 'table data type example') --从临时表中检索 SELECT * FROM @Table_Example 三、系统表 systypes 系统的数据类型,它们存储在 systypes 表中。在 systypes 表中既包括 系统数据类型,也包括用户定义的数据类型(sysname 相当于 varchar(256), 是一种特殊的用户自定义类型)。 四、用户定义的数据类型 用户定义的数据类型并不是真正的新数据类型,它是描述已有数据 类型一种方式。可通过企业管理器或 T-SQL 语句创建和删除。 T-SQL 语句创建和删除:使用系统存储过程进行创建和删除: sp_addtype usertypename,’systemtypename’,’not null’ sp_droptype usertypename 例 1:创建 Exec sp_addtype telephone, 'varchar(24)','not null' 然后,可像其它标准数据类型一样在 create table 等中使用: create table usertype_ex(pid int identity,name char(8), tel telephone) insert usertype_ex values('张三','666383874') insert usertype_ex values('李四','6856658') select * from usertype_ex 例 2:删除 exec sp_droptype telphone
授课题目(章、节) 第十一讲 Transact-SQL变量、运算符与函数 学时_3授课时间 周3第3~5节第11)授课 主要参考书 《 SQL Server数据库原理及应用教程》,清华大学出版社 教学目的与要求 1、熟练掌握各种运算符的使用方法; 2、能正确地定义和使用局部变量,了解常用全局变量使用场合: 3、了解6类内建函数的基本功能并能熟练使用常见的函数 教学重点、难点 1、局部变量的定义和使用 2、常用内建函数的使用 大体内容 教学方法时间安排 Transact-SQL运算符 面授 Transact-SQL的局部变量和全局变量 面授 Transact-SQL内建函数 面授 用户自定义函数 面授 教研室审阅意见 教研室主任签名 年月日
14 授课题目(章、节) 第十一讲 Transact-SQL 变量、运算符与函数 学时 3 授课时间 周 3 第 3~5 节 第( 11 )次授课 主要参考书 《SQL Server 数据库原理及应用教程》,清华大学出版社 教学目的与要求: 1、熟练掌握各种运算符的使用方法; 2、能正确地定义和使用局部变量,了解常用全局变量使用场合; 3、了解 6 类内建函数的基本功能并能熟练使用常见的函数; 教学重点、难点: 1、局部变量的定义和使用 2、常用内建函数的使用 大体内容 教学方法 时间安排 Transact-SQL 运算符 面授 Transact-SQL 的局部变量和全局变量 面授 Transact-SQL 内建函数 面授 用户自定义函数 面授 教研室审阅意见: 教研室主任签名: 年 月 日
教学过程(基本内容) 辅助手段备注 时间分配 、 Transact-SQL运算符 1.算术运算符 +-*/四种可用于所有数值类型,%只能用于整数类型,/既可用于 整数又可用于实数(如5/4为1,5.0/4为125,3%4为0) 2.位运算符(&、卜^-) 位运算符的操作数可以是整型或二进制数据类型分类中的任何数据 类型(但 Image数据类型除外),此外,两个操作数不能同时是二进制 数据类型分类中的某种数据类型,bit不与二进制数据类型一起运算。 左边操作数 右边操作数 binary、 varbinary bigint、int、 smallint、 tinyint bigint、int、 smallint、 bigint、int、 smallint、 tinyint、bit、 binary、 binary bigint、int、 smallint、 tinyint、bit 对于~运算 bigint、int、 smallint、 tinyint、bit 例 create table tyex insert ty ex values( 1, 4) lect xly from ty 3.比较(关系)运算符 >,>=,<,<,=,!=,,!<,!> 比较运算符的运算结果为布尔值。 4.连接运算符(+,) +用于将两个字符串连接合并成一个字符串 操作数类型为:char、 varchar、 nchar、 nvarchar(不用于text、 ntext)。 15
15 教学过程(基本内容) 辅助手段 备注 时间分配 一、Transact-SQL 运算符 1.算术运算符 +-*/ 四种可用于所有数值类型,% 只能用于整数类型,/ 既可用于 整数又可用于实数(如 5/4 为 1,5.0/4 为 1.25,3%4 为 0)。 2.位运算符(&、|、^、~) 位运算符的操作数可以是整型或二进制数据类型分类中的任何数据 类型(但 image 数据类型除外),此外,两个操作数不能同时是二进制 数据类型分类中的某种数据类型,bit 不与二进制数据类型一起运算。 左边操作数 右边操作数 binary、varbinary bigint、int、smallint、tinyint bigint、int、smallint、 tinyint bigint、int、smallint、tinyint、bit、binary、 varbinary Bit bigint、int、smallint、tinyint、bit 对于~运算 bigint、int、smallint、tinyint 、bit 例 1: create table ty_ex (x binary, y binary) insert ty_ex values(1,4) select x|y from ty_ex 3.比较(关系)运算符 >,>=,<,<=,=,!=,<>,!<,!> 比较运算符的运算结果为布尔值。 4.连接运算符(‘+’) + 用于将两个字符串连接合并成一个字符串。 操作数类型为:char、varchar、nchar、nvarchar(不用于 text、ntext)