第4章数据表的创建与操作_第1页
第4章数据表的创建与操作_第2页
第4章数据表的创建与操作_第3页
第4章数据表的创建与操作_第4页
第4章数据表的创建与操作_第5页
已阅读5页,还剩157页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第4章章 数据表的创建与操作数据表的创建与操作 4.1 数据类型数据类型 4.2 运算符与表达式运算符与表达式 4.3 系统内置函数系统内置函数 4.4 用企业管理器创建数据表及约束对象用企业管理器创建数据表及约束对象 4.5 用用T-SQL语句创建数据表及约束对象语句创建数据表及约束对象 4.6 查看表信息、输入数据、编辑和删除记录查看表信息、输入数据、编辑和删除记录 4.7 数据表及约束对象的删除数据表及约束对象的删除 4.8 数据库应用实例数据库应用实例电脑器材销售管理电脑器材销售管理的数据表的数据表 4.9 实训要求与习题实训要求与习题 第第4章章 数据表的创建与操作数据表的创建与操

2、作 学习目的与要求 数据表是数据库中最重要的对象,数据库的全部数据数据表是数据库中最重要的对象,数据库的全部数据都存储在不同的数据表中,因而数据表的设计成功与都存储在不同的数据表中,因而数据表的设计成功与否是数据库设计的关键,将直接影响到数据库使用的否是数据库设计的关键,将直接影响到数据库使用的合理有效。合理有效。了解了解SQL Server数据库系统,掌握数据表数据库系统,掌握数据表的数据类型、运算符与表达式、常用系统函数是创建的数据类型、运算符与表达式、常用系统函数是创建数据库必备的基础知识。数据表及约束对象的创建以数据库必备的基础知识。数据表及约束对象的创建以及数据的输入更新是创建数据库

3、的重要环节。通过本及数据的输入更新是创建数据库的重要环节。通过本章学习,读者应熟悉并掌握章学习,读者应熟悉并掌握SQL Server数据库的数据数据库的数据类型、表达式和常用内置函数,掌握数据表及约束对类型、表达式和常用内置函数,掌握数据表及约束对象的创建、修改、删除以及数据的输入、更新、删除象的创建、修改、删除以及数据的输入、更新、删除等操作,独立创建等操作,独立创建电脑器材销售管理电脑器材销售管理diannaoxs数数据库的各个数据表。据库的各个数据表。 4.1 数据类型数据类型 数据类型决定了数据的存储格式、长度、精度等属性。数据类型决定了数据的存储格式、长度、精度等属性。SQL Ser

4、ver为我们提供了多达为我们提供了多达26种的丰富数据类型,用户还可以自种的丰富数据类型,用户还可以自己定义数据类型(见第己定义数据类型(见第7章)。章)。 4.1.1、二进制数据、二进制数据 SQL Server用用binary、varbinary 和和image三种数据类型来存三种数据类型来存储二进制数据。二进制类型可用于存储声音图像等数字类型的储二进制数据。二进制类型可用于存储声音图像等数字类型的数据。数据。1、定长二进制、定长二进制 binary(n) 按按n个字节的固定长度存放二进制数据,最大长度为个字节的固定长度存放二进制数据,最大长度为8K字节,字节,即即1n8000。 若实际数

5、据不足若实际数据不足n个字节,则在数据尾部加个字节,则在数据尾部加0补足补足n个字节。个字节。2、变长二进制、变长二进制 varbinary(n) 按不超过按不超过n个字节的实际长度存放二进制数据,最大长度个字节的实际长度存放二进制数据,最大长度8K字节,即字节,即1n8000。 若实际数据不足若实际数据不足n个字节,按实际长度存储数据,不补充加个字节,按实际长度存储数据,不补充加0; 3、图像二进制、图像二进制 Image 图像二进制可存储不超过图像二进制可存储不超过231-1个字节的二进制数据,个字节的二进制数据,比 如 文 本 文 档 、比 如 文 本 文 档 、 E x c e l 图

6、 表 以 及 图 像 数 据 ( 包图 表 以 及 图 像 数 据 ( 包括括.GIF、.BMP、.JPEG文件)等。文件)等。 注意:注意:l l 二进制数据常量不允许加引号,默认用十进制书写,二进制数据常量不允许加引号,默认用十进制书写,如如1234、1011均视为十进制常量,如果使用十六进制则均视为十进制常量,如果使用十六进制则必须加必须加0 x前缀。输出显示默认采用十六进制。前缀。输出显示默认采用十六进制。l l 若实际数据二进制长度超过指定的若实际数据二进制长度超过指定的n个字节,用局部变个字节,用局部变量存储时只截取二进制的前量存储时只截取二进制的前n个字节,其余二进制位舍掉。个字

7、节,其余二进制位舍掉。l l 数据库中二进制字段的数据不能在数据表中直接输入,数据库中二进制字段的数据不能在数据表中直接输入,即即“无法编辑该单元无法编辑该单元”。l l 在用在用INSERT或或UPDATE为数据表二进制字段输入、更为数据表二进制字段输入、更新数据时,如果超过新数据时,如果超过n字节,则系统提示字节,则系统提示“将截断字符串将截断字符串或二进制数据或二进制数据”并终止命令执行,不能保存该数据。并终止命令执行,不能保存该数据。 【例【例4-1】二进制数据】二进制数据1aa2bb3cc4共共40位位5个字节,可个字节,可表示为表示为0 x1aa2bb3cc4 若定义数据类型为若定

8、义数据类型为binary(6)则数据后加则数据后加0按按6字节存储字节存储为:为:0 x1aa2bb3cc400 若定义数据类型为若定义数据类型为varbinary(6)则按实际数据存储为:则按实际数据存储为:0 x1aa2bb3cc4 若定义数据类型为若定义数据类型为binary(4)或或varbinary(4),则在局部,则在局部变量中存储为:变量中存储为:0 x1aa2bb3c。 存储到数据表字段中时,系统提示存储到数据表字段中时,系统提示“将截断字符串或将截断字符串或二进制数据二进制数据”不能保存该数据。不能保存该数据。4.1.24.1.2、数值型数据、数值型数据 SQL Server

9、SQL Server数值型数据共数值型数据共8 8种,整型种,整型4 4种,实型种,实型4 4种。种。1 1字节型整数字节型整数 TinyIntTinyInt 占占1 1个字节固定长度内存,可存储个字节固定长度内存,可存储0-2550-255范围内的任意无范围内的任意无符号整数。符号整数。2 2短整型整数短整型整数 smallIntsmallInt 占占2 2字节固定长度内存,最高位为符号位,可存储字节固定长度内存,最高位为符号位,可存储- -32768327673276832767(-2-21515221515-1-1)的任意整数。)的任意整数。3 3基本整型整数基本整型整数 Int Int

10、 或或IntegerInteger 占占4 4字节固定长度内存,高位为符号位,可存储字节固定长度内存,高位为符号位,可存储- -2147483648-21474836472147483648-2147483647(-2-23131-2-23131-1-1)范围内的任意整数。)范围内的任意整数。4 4长整型整数长整型整数 BigintBigint 占占8 8字节固定长度内存,高位为符号位,可存储字节固定长度内存,高位为符号位,可存储-2-26363到到2 26363-1-1范围内的任意整据。范围内的任意整据。 注意:整型数据可以在较少字节里存储精确的整型数字,注意:整型数据可以在较少字节里存储精

11、确的整型数字,存储效率高,不可能出现小数的数据应尽量选用整数类型。存储效率高,不可能出现小数的数据应尽量选用整数类型。 5 5近似值实型浮点数近似值实型浮点数 realreal 占占4 4字节固定长度内存,最多字节固定长度内存,最多7 7位有效数字,范围从位有效数字,范围从- -3.40E+383.40E+38到到1.791.79E+38E+38。6 6可变精度实型浮点数可变精度实型浮点数 float(n)float(n)l l 当当n n的取值为的取值为1-241-24时,数据精度是时,数据精度是7 7位有效数字,范围位有效数字,范围从从-3.40E+38-3.40E+38到到1.79E+3

12、81.79E+38,占,占4 4字节内存。字节内存。l l 当当n n的取值为的取值为25-5325-53时,精度是时,精度是1515位有效数字,范围从位有效数字,范围从- -1.79E+3081.79E+308到到1.79E+3081.79E+308,占,占8 8字节内存。字节内存。l l 实型浮点数常量可以直接使用科学记数法的指数形式实型浮点数常量可以直接使用科学记数法的指数形式书写。书写。7 7精确小数型数据精确小数型数据 Numeric(p,s)Numeric(p,s)l l p p指定总位数(不含小数点),指定总位数(不含小数点),p p的取值范围的取值范围1p381p38。即。即最

13、多可达最多可达3838位有效数字,不使用指数的科学记数法表示,但位有效数字,不使用指数的科学记数法表示,但取值范围必须在取值范围必须在-10-103838到到10103838-1-1之间。之间。l l s s指定其中的小数位数,指定其中的小数位数,s s的取值范围的取值范围00spsp。l l numericnumeric型数据在数据表里可带型数据在数据表里可带identityidentity关键字(自动增关键字(自动增长字段)。长字段)。l l numericnumeric型数据所占的存储空间随精度的不同而不同,一型数据所占的存储空间随精度的不同而不同,一般说来对应关系为般说来对应关系为:

14、: p p的取值范围的取值范围 数据所占内存字节数数据所占内存字节数 1 - 9 51 - 9 5 10-19 9 10-19 9 20-28 13 20-28 13 29-38 17 29-38 178 8精确小数型数据精确小数型数据 Decimal(p,s) Decimal(p,s) 或或 Dec(p,s)Dec(p,s)该类型数据与该类型数据与Numeric(p,s)Numeric(p,s)类型用法相同,所不同的是类型用法相同,所不同的是Decimal(p,s)Decimal(p,s)不能用于数据表的不能用于数据表的identityidentity字段。字段。 8 8精确小数型数据精确小

15、数型数据 Decimal(p,s) Decimal(p,s) 或或 Dec(p,s)Dec(p,s) 该类型数据与该类型数据与Numeric(p,s)Numeric(p,s)类型用法相同,所不同的是类型用法相同,所不同的是Decimal(p,s)Decimal(p,s)不能用于数据表的不能用于数据表的identityidentity字段。字段。 4.1.34.1.3字符型数据字符型数据 SQL ServerSQL Server提供了提供了Char(n)Char(n)、VarcharVarchar(n)(n)和和TextText三种三种ASCASC码字符型数据。码字符型数据。1 1定长字符型定长

16、字符型 Char(n)Char(n) 按按n n个字节的固定长度存放字符串,每个字符占用一个字个字节的固定长度存放字符串,每个字符占用一个字节,长度范围节,长度范围11n8000n8000; 若实际字符串长度小于若实际字符串长度小于n n,则尾部填充空格按,则尾部填充空格按n n个字节的个字节的字符串存储。字符串存储。2 2变长字符型变长字符型 VarcharVarchar(n)(n) 按不超过按不超过n n个字节的实际长度存放字符串,可指定最大长个字节的实际长度存放字符串,可指定最大长度为度为11n8000n8000; 若实际字符串长度小于若实际字符串长度小于n n,则按字串实际长度存储,不

17、填,则按字串实际长度存储,不填充空格。充空格。 当存储的字符串长度不固定时,使用当存储的字符串长度不固定时,使用VarcharVarchar数据类型可数据类型可以有效地节省空间。以有效地节省空间。 3 3文本类型文本类型 TextText Text Text类型存储的是可变长度的字符数据类型,最大长度类型存储的是可变长度的字符数据类型,最大长度为为2 23131-1-1字节字节2GB2GB的数据。当存储超过的数据。当存储超过80008000字节时,可选择字节时,可选择TextText数据类型。数据类型。l l 字符型数据采用字符型数据采用ASCASC码字符集,英文符号占码字符集,英文符号占1

18、1个字节,汉个字节,汉字占字占2 2个字节。个字节。l l 字符型字符串常量必须使用单引号括起来。字符型字符串常量必须使用单引号括起来。l l CharChar、VarcharVarchar数据类型若不指定长度,默认为数据类型若不指定长度,默认为1 1字节。字节。l l 若实际字符串长度超过指定的若实际字符串长度超过指定的n n个字节,用局部变量存储个字节,用局部变量存储时只截取字符串前时只截取字符串前n n个字节,其余字符舍掉。个字节,其余字符舍掉。l l 字符型字符串数据可以在企业管理器中直接输入到数据字符型字符串数据可以在企业管理器中直接输入到数据表中,但输入的字符串长度超过字段指定长度

19、时系统不接表中,但输入的字符串长度超过字段指定长度时系统不接受,也不会自动截取。受,也不会自动截取。l l 在用在用INSERTINSERT或或UPDATEUPDATE为数据表字符型字段输入、更新字为数据表字符型字段输入、更新字符串时,如果超过符串时,如果超过n n字节则系统提示字节则系统提示“将截断字符串或二进将截断字符串或二进制数据制数据”并终止命令执行,不能保存该数据。并终止命令执行,不能保存该数据。 【例【例4-24-2】字符型字符串】字符型字符串abcdABCDabcdABCD我们学习我们学习共共1212个字符占个字符占1616字节。字节。 若定义数据类型为若定义数据类型为char(

20、20)char(20)则存储为:则存储为: abcdABCDabcdABCD我们学习我们学习 若定义数据类型为若定义数据类型为varcharvarchar(20)(20)则按实际长度存储为:则按实际长度存储为: abcdABCDabcdABCD我们学习我们学习 若定义数据类型为若定义数据类型为char(10)char(10)或或varcharvarchar(10)(10),则在局,则在局部变量中存储为:部变量中存储为: abcdABCDabcdABCD我我 存储到数据表字段中时,系统提示存储到数据表字段中时,系统提示“将截断字符串或将截断字符串或二进制数据二进制数据”不能保存该数据。不能保存该

21、数据。 4.1.4统一字符型数据 统一字符型也称为宽字符型,采用统一字符型也称为宽字符型,采用UnicodeUnicode字符集,包字符集,包括了世界上所有语言符号,一个英文符号或一个汉字都括了世界上所有语言符号,一个英文符号或一个汉字都占用占用2 2个字节的内存。前个字节的内存。前127127个字符为个字符为ASCASC码字符。码字符。 SQL ServerSQL Server提供了提供了Nchar(n)Nchar(n)、Nvarchar(n)Nvarchar(n)和和NtextNtext三三种统一字符型数据。种统一字符型数据。1 1定长统一字符型定长统一字符型 NcharNchar(n)(

22、n) 按按n n个字符的固定长度存放字符串,每个字符占用个字符的固定长度存放字符串,每个字符占用2 2个个字节,长度范围字节,长度范围11n4000n4000; 若实际字符个数小于最大长度若实际字符个数小于最大长度n n,则尾部填充空格按,则尾部填充空格按n n个字符存储。个字符存储。2 2变长统一字符型变长统一字符型 NvarcharNvarchar(n)(n) 按不超过按不超过n n个字符的实际长度存放字符串,可指定最大个字符的实际长度存放字符串,可指定最大字符数为字符数为11n4000n4000; 若实际字符个数小于若实际字符个数小于n n,则按字符串实际长度占用存储,则按字符串实际长度

23、占用存储空间,不填充空格。空间,不填充空格。3 3统一字符文本类型统一字符文本类型 NtextNtext NtextNtext存储的是可变长度的双字节字符数据类型,最存储的是可变长度的双字节字符数据类型,最多可以存储(多可以存储(2 23030-1-1)/2/2个字符。个字符。l l 统一字符型数据长度统一字符型数据长度n n为为“字符字符”个数,所占字节数个数,所占字节数为为2 2* *n n。l l 统一字符型字符串常量必须使用单引号括起来。统一字符型字符串常量必须使用单引号括起来。l l NcharNchar、NvarcharNvarchar数据类型若不指定长度数据类型若不指定长度n n

24、,默认为,默认为1 1个字符(个字符(2 2个字节)。个字节)。l l 若实际字符串长度超过指定的若实际字符串长度超过指定的n n个字符,用局部变量个字符,用局部变量存储时只截取字符串前存储时只截取字符串前n n个字符,其余字符舍掉。个字符,其余字符舍掉。l l 统一字符型数据可以在企业管理器中直接输入到数据统一字符型数据可以在企业管理器中直接输入到数据表中,但输入的字符个数超过字段长度时则系统不接受。表中,但输入的字符个数超过字段长度时则系统不接受。l l 在用在用INSERTINSERT或或UPDATEUPDATE为数据表统一字符型字段输入、为数据表统一字符型字段输入、更新字符串时,若超过

25、更新字符串时,若超过n n个字符则系统提示个字符则系统提示“将截断字将截断字符串或二进制数据符串或二进制数据”并终止命令执行,不能保存该数据。并终止命令执行,不能保存该数据。 【例【例4-34-3】字符串】字符串abcdABCDabcdABCD我们学习我们学习作为统一字作为统一字符型共符型共1212个字符占个字符占2424字节。字节。 若定义数据类型为若定义数据类型为NcharNchar(14)(14)则存储为:则存储为: abcdABCDabcdABCD我们学习我们学习 若定义数据类型为若定义数据类型为NvarcharNvarchar(14)(14)则按实际字符数存储则按实际字符数存储为:为

26、: abcdABCDabcdABCD我们学习我们学习 若定义数据类型为若定义数据类型为Nchar(10)Nchar(10)或或NvarcharNvarchar(10)(10),则在,则在局部变量中存储为:局部变量中存储为: abcdABCDabcdABCD我们我们 存储到数据表字段中时,系统提示存储到数据表字段中时,系统提示“将截断字符串或将截断字符串或二进制数据二进制数据”不能保存该数据。不能保存该数据。4.1.54.1.5日期日期/ /时间型数据时间型数据 SQL ServerSQL Server提供的日期提供的日期/ /时间数据类型可存储日期和时间时间数据类型可存储日期和时间的组合数据。

27、以日期的组合数据。以日期/ /时间类型存储日期或时间数据比字符时间类型存储日期或时间数据比字符型更简单,因为型更简单,因为SQL ServerSQL Server提供了一系列专门处理日期和提供了一系列专门处理日期和时间的函数来处理这类数据。若使用字符型存储日期和时时间的函数来处理这类数据。若使用字符型存储日期和时间,计算机不能识别,也不能自动对这些数据按照日期和间,计算机不能识别,也不能自动对这些数据按照日期和时间进行处理。时间进行处理。 SQL ServerSQL Server提供了提供了SmalldatetimeSmalldatetime和和DatetimeDatetime两种两种日期日期

28、/ /时间的数据类型。时间的数据类型。1 1短日期短日期/ /时间型时间型 SmalldatetimeSmalldatetime 占占4 4个字节固定长度的内存,存放个字节固定长度的内存,存放19001900年年1 1月月1 1日到日到20792079年年6 6月月6 6日的日期时间,可以精确到分。日的日期时间,可以精确到分。 2 2基本日期基本日期/ /时间型时间型 DatetimeDatetime 占占8 8个字节固定长度的内存,存放个字节固定长度的内存,存放17531753年年1 1月月1 1日到日到99999999年年1212月月3131日的日期时间,可以精确到千分之一秒,即日的日期时

29、间,可以精确到千分之一秒,即0.0010.001s s。 注意:注意:l l 日期时间型常量与字符串常量相同必须使用单引号括起来。日期时间型常量与字符串常量相同必须使用单引号括起来。l l SQL ServerSQL Server在用户没有指定小时以下精确的时间数据时,在用户没有指定小时以下精确的时间数据时,自动设置自动设置DatetimeDatetime或或SmalldatetimeSmalldatetime数据的时间为数据的时间为00:00:0000:00:00。l l 数据库中默认的日期格式为数据库中默认的日期格式为“年年- -月月- -日日”,输入时可使用,输入时可使用年年/ /月月/

30、 /日日或或年年- -月月- -日日,也可以使用,也可以使用月月/ /日日/ /年年、月月- -日日- -年年、日日/ /月月/ /年年或或日日- -月月- -年年。l l 如果使用如果使用日日/ /月月/ /年年或或日日- -月月- -年年,系统不能区分时,系统不能区分时默认按默认按“月月- -日日- -年年”处理。处理。4.1.64.1.6货币型数据货币型数据 SQL ServerSQL Server提供了提供了SmallmoneySmallmoney和和MoneyMoney两种两种货币型数据。货币型数据。1 1短货币型短货币型 SmallmoneySmallmoney 该类型占该类型占4

31、 4个字节固定长度的内存,实际是由个字节固定长度的内存,实际是由2 2个个2 2字节的字节的整数构成,前整数构成,前2 2个字节为货币值的整数部分,后个字节为货币值的整数部分,后2 2个字节为货个字节为货币值的小数部分。货币值的范围从币值的小数部分。货币值的范围从-214748.3648-214748.3648到到+214748.3647+214748.3647,可以精确到万分之一货币单位。,可以精确到万分之一货币单位。2 2基本货币型基本货币型 MoneyMoney 该类型占该类型占8 8个字节固定长度的内存,由个字节固定长度的内存,由2 2个个4 4字节的整数构字节的整数构成,前成,前4

32、4个字节为货币值的整数部分,后个字节为货币值的整数部分,后4 4个字节表示货币值个字节表示货币值的小数部分。货币值的范围从的小数部分。货币值的范围从-2-26363到到2 26363-1-1,可精确到万分之,可精确到万分之一货币单位。一货币单位。 MoneyMoney或或SmallmoneySmallmoney类型的数值常量,应加货币符号类型的数值常量,应加货币符号$ $前缀,前缀,负数时加后缀负数时加后缀$ $。 如:如:$222.222 , -333.333$ $222.222 , -333.333$ 4.1.74.1.7位类型数据位类型数据 bitbit l l 位类型只能存放位类型只能

33、存放0 0、1 1和和NULL(NULL(空值空值) ),一般用于逻辑判断。,一般用于逻辑判断。l l 位类型数据占位类型数据占1 1位二进制内存,如果一个数据表中有位二进制内存,如果一个数据表中有8 8个以个以下的位类型字段,系统用一个字节存储所有这些字段,超过下的位类型字段,系统用一个字节存储所有这些字段,超过8 8个不足个不足1616个用个用2 2个字节存放。个字节存放。l l 位类型数据输入任意的非位类型数据输入任意的非0 0值时,都按值时,都按1 1处理。处理。 SQL Server SQL Server 常用数据类型见表常用数据类型见表4.14.1。4.1.84.1.8其他特殊数据

34、类型其他特殊数据类型1 1、TimestampTimestamp: 也称为时间戳数据类型,它提供数据库范围内的惟一值,也称为时间戳数据类型,它提供数据库范围内的惟一值,反应数据库中数据修改的相对顺序,相当于一个单调上升反应数据库中数据修改的相对顺序,相当于一个单调上升的计数器。的计数器。 2 2、UniqueidentifierUniqueidentifier: 用于存储用于存储1616字节长度的二进制数据类型,是字节长度的二进制数据类型,是SQL ServerSQL Server根据计算机网络适配器地址和根据计算机网络适配器地址和CPUCPU时钟而产生的全局惟一标时钟而产生的全局惟一标识符代

35、码(识符代码(Globally Unique IdentifierGlobally Unique Identifier,简写为,简写为GUIDGUID)。)。3 3、sqlsql_variant_variant: 用于存储除文本、图形数据和用于存储除文本、图形数据和timestamptimestamp类型数据外的其类型数据外的其它任何合法的它任何合法的SQL ServerSQL Server数据。数据。4 4、tabletable: 用于存储对表或者视图处理后的结果集。这种新的数据用于存储对表或者视图处理后的结果集。这种新的数据类型使得用一个变量可以存储一个表,从而使函数或过程类型使得用一个变

36、量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。返回查询结果更加方便、快捷。4.1.94.1.9图像、文本型数据的存储方式图像、文本型数据的存储方式 存储文本、图像等大型数据时,可使用存储文本、图像等大型数据时,可使用TextText、NtextNtext和和ImageImage三种数据类型,这三种数据类型的数据量往往比较大,三种数据类型,这三种数据类型的数据量往往比较大,在在SQL Server 7.0SQL Server 7.0以前的版本中,文本和图像数据被存储以前的版本中,文本和图像数据被存储在专门的页中,在数据行的相应位置只保存指向这些数据在专门的页中,在数据行的相应位置

37、只保存指向这些数据的指针。的指针。 SQL Server 2000SQL Server 2000提供了将小型文本或图像数据直接在行提供了将小型文本或图像数据直接在行中存储的功能,不需要到另外的页中访问这些数据,使得中存储的功能,不需要到另外的页中访问这些数据,使得读写文本和图像数据可以与读写普通字符串一样快。读写文本和图像数据可以与读写普通字符串一样快。 使用系统存储过程使用系统存储过程sp_tableoptionsp_tableoption可以指定文本或图像可以指定文本或图像数据是否在表的行中存储。数据是否在表的行中存储。 语法格式:语法格式: sp_tableoptionsp_tableo

38、ption 表名表名,text in row,TRUE|FALSEtext in row,TRUE|FALSE4.1.94.1.9图像、文本型数据的存储方式图像、文本型数据的存储方式说明:说明:l l 当指定当指定“TRUE”TRUE”选项时,允许小型文本或图像数据直接选项时,允许小型文本或图像数据直接在该表的行中存储,而且还可以指定文本或图像数据大小在该表的行中存储,而且还可以指定文本或图像数据大小的上限值(的上限值(24-700024-7000字节),默认上限字节),默认上限256256字节。字节。l l 当数据的大小不超过上限值而且同时数据行有足够空间当数据的大小不超过上限值而且同时数据

39、行有足够空间时,文本和图像数据就会直接存储在行中。时,文本和图像数据就会直接存储在行中。l l 若以上两个条件有一个不满足时,行中仍只存放指向数若以上两个条件有一个不满足时,行中仍只存放指向数据存储位置的指针。据存储位置的指针。【例【例4-44-4】在当前数据库中创建数据表】在当前数据库中创建数据表exampleexample,字段,字段bin_1bin_1存放存放TEXTTEXT类类型数据,型数据,bin_2bin_2存放存放NTEXTNTEXT类型数据,类型数据,bin_3bin_3存放存放ImageImage类型数据。类型数据。CREATE TABLE example(bin_1 tex

40、t,bin_2 ntext,bin_3 ntextCREATE TABLE example(bin_1 text,bin_2 ntext,bin_3 ntext Image) Image)GoGo / /* * 以下语句指定不大于以下语句指定不大于10001000字节的文本或图像数据在行中存储字节的文本或图像数据在行中存储 * */ /sp_tableoptionsp_tableoption example, text in row, TRUE example, text in row, TRUEsp_tableoptionsp_tableoption example ,text in row

41、, 1000 example ,text in row, 1000 / /* * 以下语句指定以下语句指定MytableMytable表不在行中存储文本和图像数据表不在行中存储文本和图像数据 * */ /sp_tableoption Mytablesp_tableoption Mytable , text in row, FALSE , text in row, FALSE4.1.104.1.10、局部变量的定义与输出、局部变量的定义与输出 本书在第本书在第7 7、8 8章将专门详细介绍章将专门详细介绍T-SQLT-SQL的程序设计、批的程序设计、批处理、局部变量、自定义类型和函数、游标、存储

42、过程处理、局部变量、自定义类型和函数、游标、存储过程与触发器,但在前几章也许会用到批处理及局部变量的与触发器,但在前几章也许会用到批处理及局部变量的概念,为此我们先简单介绍一下有关的知识。概念,为此我们先简单介绍一下有关的知识。1 1、批处理、批处理 批处理是一个或多个批处理是一个或多个SQLSQL语句的集合,构成一个独立的语句的集合,构成一个独立的程序模块,以程序模块,以GOGO语句为结束标志。从程序开头或从某一语句为结束标志。从程序开头或从某一个个GOGO语句开始到下一个语句开始到下一个GOGO语句或程序结束为一个批处理。语句或程序结束为一个批处理。2 2、局部变量、局部变量 局部变量是用

43、户自定义的变量,用于临时存储各种类局部变量是用户自定义的变量,用于临时存储各种类型的数据。型的数据。3 3、定义局部变量、定义局部变量 语法格式:语法格式: DECLARE DECLARE 变量名变量名 数据类型数据类型(长度长度) ) ,n n 例如:例如:DECLARE x intDECLARE x int , s decimal(8.4) , s decimal(8.4) 注意:注意:l l 局部变量必须以局部变量必须以 开头以区别字段名变量。固定长度的类开头以区别字段名变量。固定长度的类型不需要指定长度。型不需要指定长度。l l 局部变量只在一个批处理内有效,其生命周期从定义开始局部变

44、量只在一个批处理内有效,其生命周期从定义开始到它遇到的第一个到它遇到的第一个GOGO语句或者到程序结束。语句或者到程序结束。4 4、局部变量的赋值、局部变量的赋值 语法格式:语法格式: SET SET 局部变量局部变量= =表达式表达式5 5、显示输出局部变量、显示输出局部变量 语法格式:语法格式: PRINT PRINT 局部变量或表达式局部变量或表达式4.2 4.2 运算符与表达式运算符与表达式 4.2.14.2.1、算术运算符与表达式、算术运算符与表达式 算术运算符:算术运算符: +(+(加加) )、-(-(减减) )、* *( (乘乘) )、/(/(除除) )、%(%(取模求余取模求余

45、) )。4.2.24.2.2、逻辑类运算符与逻辑值表达式、逻辑类运算符与逻辑值表达式 SQLSQL逻辑值表达式都是作为判断条件使用的,取值为:逻辑值表达式都是作为判断条件使用的,取值为:l l TRUETRUE: 真,条件成立真,条件成立l l FALSEFALSE: 假,条件不成立假,条件不成立l l UNKNOWNUNKNOWN:不确定,是某个数据与:不确定,是某个数据与NULLNULL比较的结果比较的结果 在数据库中,在数据库中,NULLNULL是一个不知道或不能确定的专用数据是一个不知道或不能确定的专用数据值,它不等于数值值,它不等于数值0 0和字符的空格。某个数据与和字符的空格。某个

46、数据与NULLNULL进行进行比较运算的逻辑值就是比较运算的逻辑值就是UNKNOWNUNKNOWN,因为大家对使用,因为大家对使用UNKNOWNUNKNOWN都不习惯,所以大多数都不习惯,所以大多数SQLSQL版本都提供了专门的空值运算版本都提供了专门的空值运算符符“IS NULL”IS NULL”,用于判断是否是空值,用于判断是否是空值NULLNULL。 例如:假设例如:假设“职称职称”的内容为的内容为NULLNULL,若有条件表达式:,若有条件表达式: 职称职称= =讲师讲师 则该表达式的值不是则该表达式的值不是truetrue或或falsefalse而是而是unknownunknown。

47、 SQL Server 2000SQL Server 2000提供了由提供了由7 7类运算符组成的逻辑值条件类运算符组成的逻辑值条件表达式。表达式。1 1、比较运算符、比较运算符 ( (大于大于) )、=(=(大于等于大于等于) )、 ( (小于小于) )、= (= (小于等于小于等于) ) =( =(等于等于) )、或或!=(!=(不等于不等于) )、!(!(不大于不大于) )、!(! 500 500 则单价大于则单价大于500500条件为条件为TRUETRUE,单价不大于,单价不大于500500条件为条件为FALSEFALSE 销售单价销售单价- -进价进价=销售单价销售单价/2 /2 则

48、毛利润大于等于一半时条件为真则毛利润大于等于一半时条件为真2 2、逻辑运算符、逻辑运算符 not ( not (逻辑非逻辑非) )、 and (and (逻辑与逻辑与) )、 or (or (逻辑或逻辑或) ) 逻辑条件表达式:逻辑条件表达式: not not 逻辑值表达式逻辑值表达式 逻辑值表达式逻辑值表达式1 and 1 and 逻辑值表达式逻辑值表达式2 2 逻辑值表达式逻辑值表达式1 or 1 or 逻辑值表达式逻辑值表达式2 2 如:如:notnot单价单价 500 500 则单价不大于则单价不大于500500条件为真,等价条件为真,等价于:单价于:单价 = 500=1000=100

49、0 则只有孙立华收到的商品中进价大于等于则只有孙立华收到的商品中进价大于等于10001000时条件才时条件才为真为真 如:单价如:单价=500 or =500 or 单价单价=1000 =1000 则单价等于则单价等于500500或者等于或者等于10001000,只要满足一个条件就为真,只要满足一个条件就为真2 2、逻辑运算符、逻辑运算符 在逻辑运算中,逻辑值在逻辑运算中,逻辑值UNKNOWN(UNKNOWN(不确定不确定) )可以看成是介于真假之间的可以看成是介于真假之间的中立值,既不是真也不是假,不真不假就是不确定。中立值,既不是真也不是假,不真不假就是不确定。 如果把如果把TRUE UN

50、KNOWN FALSETRUE UNKNOWN FALSE这三者的关系理解为由高级这三者的关系理解为由高级低低级,就比较好理解三者的逻辑运算结果了。级,就比较好理解三者的逻辑运算结果了。ANDAND运算:结果取低级的运算:结果取低级的 TRUE AND UNKOWN TRUE AND UNKOWN 结果结果UNKOWNUNKOWN UNKOWN AND UNKOWN UNKOWN AND UNKOWN 结果结果UNKOWNUNKOWN FALSE AND UNKOWN FALSE AND UNKOWN 结果结果FALSEFALSEOROR运算:结果取高级的运算:结果取高级的 TRUE OR U

51、NKOWN TRUE OR UNKOWN 结果结果TRUETRUE UNKOWN UNKOWN OR UNKOWN OR UNKOWN 结果结果UNKOWNUNKOWN FALSE OR UNKOWN FALSE OR UNKOWN 结果结果UNKOWNUNKOWNNOTNOT运算:结果取相反的运算:结果取相反的 NOT TRUE NOT TRUE 结果结果FALSE FALSE NOT UNKOWN NOT UNKOWN 结果结果UNKOWNUNKOWN NOT FALSE NOT FALSE 结果结果TRUETRUE3 3、范围运算符、范围运算符 not between not betwe

52、en and and 条件表达式:表达式条件表达式:表达式 not between not between 起始值起始值 and and 终止值终止值 between between and and用于判断表达式的值是否在某个范围内,若在用于判断表达式的值是否在某个范围内,若在指定范围内条件为真,不在指定范围内条件为假。等价于:指定范围内条件为真,不在指定范围内条件为假。等价于: 表达式表达式=起始值起始值 and and 表达式表达式=终止值终止值 即:起始值即:起始值=表达式表达式=终止值终止值 not between not between and and判断表达式的值是否不在某个范围内

53、,若不判断表达式的值是否不在某个范围内,若不在指定范围内条件为真,否则为假。等价于:在指定范围内条件为真,否则为假。等价于: 表达式表达式 终止值终止值 即:表达式小于起始值或大于终止值条件为真即:表达式小于起始值或大于终止值条件为真 如:如:X between 5 and 10 X between 5 and 10 则则X=5X=5且且X=10X=10条件为真,条件为真,X5X10X10为假。为假。 X not between 5 and 10 X not between 5 and 10 则则X5X10X10条件为真,条件为真,X=5X=5且且X=10X=10为假。为假。 注意:注意:be

54、tweenbetween所选取的数据范围包括边界值,所选取的数据范围包括边界值,not betweennot between则不则不包括边界值,包括边界值,notnot实际上就是逻辑非运算符。实际上就是逻辑非运算符。 4 4、多值列表运算符、多值列表运算符 not not in ( in ( ) ) 条件表达式:条件表达式: not not 表达式表达式 in ( in ( 值值1, 1, 值值2, 2, , , 值值n )n ) in ( in ( ) )用于判断表达式的值是否等于所给出的值之用于判断表达式的值是否等于所给出的值之一,只要与其中任何一个值相等条件就为真,全部都不一,只要与其中

55、任何一个值相等条件就为真,全部都不相等为假。相等为假。 Not Not in ( in ( ) )表示判断表达式的值是否全部不等表示判断表达式的值是否全部不等于所给出的值,所有的值一个也不相等条件为真,只要于所给出的值,所有的值一个也不相等条件为真,只要有一个相等为假。有一个相等为假。 如:如:X in (1X in (1,3 3,5) 5) 则相当于逻辑表达式:则相当于逻辑表达式:X=1 or X=3 or X=5X=1 or X=3 or X=5。 如:如:not X in (1not X in (1,3 3,5) 5) 则相当于逻辑表达式:则相当于逻辑表达式:X1 and X3 and

56、X5X1 and X3 and X5。 5 5、用于子查询的运算符、用于子查询的运算符(1)列表比较运算符)列表比较运算符 ANY | ALL 列表运算符列表运算符ANY与包含运算符与包含运算符in功能大致相同,但功能大致相同,但IN可以独立使用,可以独立使用,而而ANY必须与比较运算符配合使用;必须与比较运算符配合使用;in只是比较相等(包含),只是比较相等(包含),ANY可可进行任何比较。进行任何比较。 列表比较的条件表达式格式:列表比较的条件表达式格式: 表达式表达式 比较运算符比较运算符 ANY (子查询的一列值子查询的一列值) 表达式表达式 比较运算符比较运算符 ALL (子查询的一

57、列值子查询的一列值)该条件将表达式与子查询返回的一整列值按给定的比较运算符逐一比较:该条件将表达式与子查询返回的一整列值按给定的比较运算符逐一比较: 只要有一个比较成立:只要有一个比较成立: ANY的结果为真的结果为真(相当于或运算相当于或运算)。 只有全部比较都成立:只有全部比较都成立: ALL的结果为真的结果为真(相当于与运算相当于与运算)。 在在SQL-92标准中还可使用标准中还可使用SOME运算符,运算符,SOME运算符与运算符与ANY 等效。等效。(2)记录存在逻辑运算符)记录存在逻辑运算符 not exists 逻辑运算符逻辑运算符not exists可以检查子查询返回的结果集中是

58、否包含有记可以检查子查询返回的结果集中是否包含有记录。若子查询结果集中包含记录,则录。若子查询结果集中包含记录,则exists为真,否则为假。为真,否则为假。 ANY | ALL与与not exists的详细用法见第的详细用法见第5章子查询。章子查询。6 6、空值运算符、空值运算符 not is nullnot is null 条件表达式:表达式条件表达式:表达式 not is nullnot is null is null is null表示判断表达式的值是否等于空值,如果是空表示判断表达式的值是否等于空值,如果是空值值NULLNULL则条件为真,否则为假。则条件为真,否则为假。 not i

59、s nullnot is null表示判断表达式的值是否不等于空值,如表示判断表达式的值是否不等于空值,如果表达式的值不是空值果表达式的值不是空值NULLNULL则条件为真。则条件为真。 例如:假设例如:假设“职称职称”的内容为的内容为NULLNULL,则:,则: ( 职称职称= =讲师讲师 )= = UNKNOWNUNKNOWN 或:或:“ “ 职称职称 IS NULL ”IS NULL ”的值为真。的值为真。 7 7、字符模糊匹配运算符、字符模糊匹配运算符 not like not like 条件表达式:字符串表达式条件表达式:字符串表达式 not like not like 通配符通配符

60、 其中通配符可以使用:其中通配符可以使用:(1 1)%:代表:代表0 0个或多个字符的任意字符串个或多个字符的任意字符串 如:字符串表达式如:字符串表达式 like A% like A% 则不论字符串有多少个字符,只要第一个字符(开头)则不论字符串有多少个字符,只要第一个字符(开头)是是“A”A”,条件为真。,条件为真。 如:字符串表达式如:字符串表达式 like %AB like %AB 则不论字符串多少个字符,只要最后两个字符(末尾)则不论字符串多少个字符,只要最后两个字符(末尾)是是“AB”AB”,条件为真。,条件为真。 如:字符串表达式如:字符串表达式 like %ABC%like %

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论