大型数据库技术表的存储原理及完整性创建管理_第1页
大型数据库技术表的存储原理及完整性创建管理_第2页
大型数据库技术表的存储原理及完整性创建管理_第3页
大型数据库技术表的存储原理及完整性创建管理_第4页
大型数据库技术表的存储原理及完整性创建管理_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 20051第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 4.1 SQL Server表的类型表的类型 4.2 表的存储原理表的存储原理 4.3 SQL Server数据类型数据类型 4.4 数据表的创建和管理数据表的创建和管理 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 200524.1 SQL Server表的类型表的类型 4.1.1 SQL Server的临时表的临时表 4.1.2 S

2、QL Server的系统表的系统表 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 200534.1.1 SQL Server的临时表的临时表 SQL Server中的数据表分为:中的数据表分为: 永久表:创建后一直存储在数据库文件中,直到用户永久表:创建后一直存储在数据库文件中,直到用户删除为止。删除为止。 临时表临时表 临时表分两种:临时表分两种: 局部临时表:表名用局部临时表:表名用#开头。只能由创建它的用户使用,开头。只能由创建它的用户使用,在该用户连接断开时,它被自动删除。在该用户连接断开时,它被自动删除。 全局临时表

3、:表名用全局临时表:表名用#开头。当前所有连接用户都可开头。当前所有连接用户都可以使用,它在最后一个会话结束时被自动删除。以使用,它在最后一个会话结束时被自动删除。 系统根据表名前有无系统根据表名前有无#符号确定创建的是临时表还是永符号确定创建的是临时表还是永久表。久表。第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 200544.2.2 SQL Server的系统表的系统表 一些系统表只存在于一些系统表只存在于mastermaster数据库,它们包含系统数据库,它们包含系统级信息。在级信息。在SQL Server 2000SQ

4、L Server 2000里共有里共有1818个表,在个表,在SQL SQL Server 2005Server 2005里对应里对应2020个视图。个视图。 。 而一些系统表则存在于每一个数据库(包括而一些系统表则存在于每一个数据库(包括mastermaster数据库),它们包含属于这个特定数据库的对象和资数据库),它们包含属于这个特定数据库的对象和资源的相关信息。在源的相关信息。在SQL Server 2000里共有里共有17个表,在个表,在SQL Server 2005里对应里对应22个视图。个视图。 注意:注意:不允许使用不允许使用SQLSQL语句直接修改系统表中的内语句直接修改系统表

5、中的内容;不允许编写程序直接访问系统表中的信息;如果容;不允许编写程序直接访问系统表中的信息;如果需要系统表信息,可以通过系统的存储过程和系统提需要系统表信息,可以通过系统的存储过程和系统提供的函数进行。供的函数进行。 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 200554.2 表的存储原理表的存储原理 4.2.1 内部存储概述内部存储概述 4.2.2 SQL ServerSQL Server数据记录结构数据记录结构 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Ser

6、ver 200564.1.1 内部存储概述内部存储概述 表是有关某个特定实例的数据集合,在关系数据库中处表是有关某个特定实例的数据集合,在关系数据库中处于核心地位。于核心地位。 创建一个表,就会有一行或多行插入到用来管理这个表创建一个表,就会有一行或多行插入到用来管理这个表的多个系统表里。至少要写信息到的多个系统表里。至少要写信息到sysobjects、sysindexes和和syscolumns这三个系统表里,当新建的表这三个系统表里,当新建的表有外码约束时,相关的信息还会插入到有外码约束时,相关的信息还会插入到sysrefrences系统系统表里。表里。第第4章章 表的存储原理及完整性创建

7、管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 20057 Sysobjects主要记录新表的基本信息,如表名、对象主要记录新表的基本信息,如表名、对象ID以以及表的所有者等等。及表的所有者等等。 Syscolumns主要记录新表列的信息,如列名、类型和长度主要记录新表列的信息,如列名、类型和长度等。等。 Sysindexes系统表记录包含指向新表所使用的存储空间的系统表记录包含指向新表所使用的存储空间的指针和有关新表大小的信息。指针和有关新表大小的信息。 sysrefrences系统表里记录参照表的外键信息。系统表里记录参照表的外键信息。 例如:创建一个表,它在

8、系统表中的记录信息如下图所示:例如:创建一个表,它在系统表中的记录信息如下图所示:第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 20058CREATE TABLE CREATE TABLE 课程表课程表( (课号课号 CHAR (6) NOT NULL ,CHAR (6) NOT NULL ,课名课名 CHAR (20) NOT NULL ,CHAR (20) NOT NULL ,教材名称教材名称 CHAR (20) NULL ,CHAR (20) NULL ,编著者编著者 CHAR (10) NULL ,CHAR (10)

9、NULL ,出版社出版社 CHAR (20) NULL ,CHAR (20) NULL , 版号版号 CHAR (15) NULL ,CHAR (15) NULL ,定价定价 MONEY NULLMONEY NULL,PRIMARY KEY(PRIMARY KEY(课号课号) ) ) ) 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 20059注意:注意: 当一个新表刚创建时,在插入第一行数据之前系统不当一个新表刚创建时,在插入第一行数据之前系统不会立即为其分配存储空间,因此会立即为其分配存储空间,因此Sysindexes表中

10、指示页表中指示页地址和预留存储空间的列将都是地址和预留存储空间的列将都是0值。值。 如果在该表上定义了如果在该表上定义了PRIMARY KEY或或UNIQUE约束,约束,而而PRIMARY KEY或或UNIQUE约束的背后是由簇集索约束的背后是由簇集索引支持的,则该表在引支持的,则该表在Sysindexes中对应行的中对应行的indid值为值为1。 任何有非簇集索引支持的其他约束在任何有非簇集索引支持的其他约束在Sysindexes表中都表中都有一行,而且该行的有一行,而且该行的indid值在值在2到到250之间。之间。 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大

11、型数据库大型数据库 SQL Server 2005104.2.2 数据行(记录)结构数据行(记录)结构 在在 SQL Server 中,数据存储的基本单位是页。中,数据存储的基本单位是页。 紧跟着页头的就是存储表的真正数据行区域。单个数据紧跟着页头的就是存储表的真正数据行区域。单个数据行的最大长度是行的最大长度是8060字节。字节。 数据行不能跨页存储(文本和图像例外)。页内数据行数据行不能跨页存储(文本和图像例外)。页内数据行的多少依赖于表的结构和要存储的数据。的多少依赖于表的结构和要存储的数据。 如果一个表的所有列都是定长,那么该表在每一页上存如果一个表的所有列都是定长,那么该表在每一页上

12、存储相同数目的行。储相同数目的行。 如果一个表里有变长列,那么该表总是在每一页上存储如果一个表里有变长列,那么该表总是在每一页上存储尽可能多的行。尽可能多的行。第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005114.2.2 数据行(记录)结构数据行(记录)结构1 1、定长记录、定长记录在定长记录里,每个字段都有固定的长度,而且字段数也是固定在定长记录里,每个字段都有固定的长度,而且字段数也是固定的。这种记录的字段能够连续存储,因此在给定记录地址的情况的。这种记录的字段能够连续存储,因此在给定记录地址的情况下,借助系统目录

13、里有关字段的长度信息就能计算出某个特殊字下,借助系统目录里有关字段的长度信息就能计算出某个特殊字段的的地址。段的的地址。2 2、变长记录、变长记录对于变长记录来说,一种可能的记录组织方式就是像定长记录一对于变长记录来说,一种可能的记录组织方式就是像定长记录一样连续地存放字段,字段之间通过分割符隔开。这种组织方式需样连续地存放字段,字段之间通过分割符隔开。这种组织方式需要扫描记录才能定位需要访问的字段。要扫描记录才能定位需要访问的字段。另一种方法是在记录开始处预留一些空间作为存放一个整数偏移另一种方法是在记录开始处预留一些空间作为存放一个整数偏移量数组的空间,数组中的第量数组的空间,数组中的第I

14、 I个整数表示记录的第个整数表示记录的第I I个字段的其始个字段的其始地址,当然这个地址是相对于记录的起始地址的。另外在数组中地址,当然这个地址是相对于记录的起始地址的。另外在数组中也存储记录尾部的偏移量,这个偏移量用来识别最后一个字段的也存储记录尾部的偏移量,这个偏移量用来识别最后一个字段的结束位置。结束位置。 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005121 1、 SQL ServerSQL Server定长记录的存储定长记录的存储首先来看最简单的情况,记录中所有字段都是定长的。首先来看最简单的情况,记录中所有

15、字段都是定长的。CREATE TABLE FixedCREATE TABLE Fixed( (col1 intcol1 int NOT NULL NOT NULLcol2 char(5) NOT NULLcol2 char(5) NOT NULLcol3 char(3) NULLcol3 char(3) NULLcol4 float NOT NULLcol4 float NOT NULL) )当这个表被创建以后,就有类似下面一个记录被插入到当这个表被创建以后,就有类似下面一个记录被插入到sysindexessysindexes系统表中:系统表中:id name indid first minl

16、enid name indid first minlen2099048 Fixed 0 0 x000000000000 242099048 Fixed 0 0 x000000000000 24而其各个字段则会被插入到而其各个字段则会被插入到syscolumnssyscolumns系统表中:系统表中:name colid xtype length xoffsetname colid xtype length xoffsetcol1 1 56 4 4col1 1 56 4 4col2 2 175 5 8col2 2 175 5 8col3 3 175 3 13col3 3 175 3 13col4

17、 4 62 8 16col4 4 62 8 16第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005131 1、 SQL ServerSQL Server定长记录的存储定长记录的存储当往当往FixedFixed表中插入一个记录数据时,例如:表中插入一个记录数据时,例如:INSERT INTO Fixed VALUES(123,ABCD,NULL,45.5)INSERT INTO Fixed VALUES(123,ABCD,NULL,45.5)FixedFixed表在表在sysindexessysindexes系统表里的内容就

18、会发生变化:系统表里的内容就会发生变化:id name indid first minlenid name indid first minlen2099048 Fixed 0 0 x720000000000 242099048 Fixed 0 0 x720000000000 24这说明在插入了一记录数据之后,这说明在插入了一记录数据之后,SQL ServerSQL Server就为就为FixedFixed表分配表分配了一个数据页。了一个数据页。FixedFixed表只包含四个定长字段,表只包含四个定长字段,sysindexessysindexes表中表中minlenminlen字段的值表示记录

19、的最小长度,该长度恰好是字段的值表示记录的最小长度,该长度恰好是syscolumnssyscolumns表中表示字段长度的表中表示字段长度的lengthlength的数字之和再加上的数字之和再加上4 4个字节。其中额个字节。其中额外的外的4 4个字节是用于记录字段数目的两个字节和表示字段中个字节是用于记录字段数目的两个字节和表示字段中NULLNULL的字节数。的字节数。 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 200514第一个字节是状态位第一个字节是状态位A A,它的值是,它的值是0 x100 x10,表示只有位,表示

20、只有位4 4是是1 1,其他位,其他位都是都是0 0,因此该记录没有变长字段(如果位,因此该记录没有变长字段(如果位5 5为为1 1说明存在变长字说明存在变长字段)。段)。 最后一个字节是最后一个字节是NULLNULL位图,其值位图,其值4 4意味只有第三位是意味只有第三位是1 1,表示第三,表示第三个字段是个字段是NULLNULL。1 1、 SQL ServerSQL Server定长记录的存储定长记录的存储第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005152 2、 SQL ServerSQL Server变长记录的

21、存储变长记录的存储 CREATE TABLE VariableCREATE TABLE Variable( (col1 char(3) NOT NULLcol1 char(3) NOT NULLcol2 varchar(15) NOT NULLcol2 varchar(15) NOT NULLcol3 varchar(5) NULLcol3 varchar(5) NULLcol4 varchar(10) NOT NULLcol4 varchar(10) NOT NULLcol5 smallintcol5 smallint NOT NULL NOT NULL) )当这个表被创建以后,就有类似下面

22、一个记录被插入到当这个表被创建以后,就有类似下面一个记录被插入到sysindexessysindexes系统表中:系统表中:id name indid first minlenid name indid first minlen18099105 Variable 0 0 x000000000000 918099105 Variable 0 0 x000000000000 9而其各个字段则会被插入到而其各个字段则会被插入到syscolumnssyscolumns系统表中:系统表中:name colid xtype length xoffsetname colid xtype length xof

23、fsetcol1 1 175 3 4col1 1 175 3 4col2 2 167 15 -1col2 2 167 15 -1col3 3 167 5 -1col3 3 167 5 -1col4 4 167 10 -1col4 4 167 10 -1col5 5 52 2 7col5 5 52 2 7第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005162 2、 SQL ServerSQL Server变长记录的存储变长记录的存储当往当往VariableVariable表中插入一个记录数据时,例如:表中插入一个记录数据时

24、,例如:INSERT INTO Variable VALUES(xyz,ABCDe,NULLINSERT INTO Variable VALUES(xyz,ABCDe,NULL, , 123,999)123,999)VariableVariable表在表在sysindexessysindexes系统表里的内容就会发生变化:系统表里的内容就会发生变化:id name indid first minlenid name indid first minlen18099105 Variable 0 0 x880000000000 918099105 Variable 0 0 x880000000000

25、 9定长字段的数据位于记录中由定长字段的数据位于记录中由syscolumnssyscolumns的的xoffsetxoffset值指定的字值指定的字节偏移量所在的位置,即节偏移量所在的位置,即col1col1起始于字节偏移量起始于字节偏移量4 4的位置,而的位置,而col5col5起始于字节偏移量起始于字节偏移量7 7的位置。的位置。 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 200517为了找到变长字段,首先要确定记录中列偏移数组的位置。在表示总字段数的为了找到变长字段,首先要确定记录中列偏移数组的位置。在表示总字段数的

26、2 2个个字节(其值是字节(其值是05000500)和表示位图的)和表示位图的1 1字节(其值为字节(其值为0404)之后就是变长字段数的两个)之后就是变长字段数的两个字节,在本例中其值是字节,在本例中其值是03000300,换算成十进制是,换算成十进制是3 3,说明该记录有,说明该记录有3 3个变长字段存在。个变长字段存在。紧跟其后的字节就是变长字段偏移数组。该例变长字段偏移数组用三个紧跟其后的字节就是变长字段偏移数组。该例变长字段偏移数组用三个2 2字节来表字节来表示示3 3个变长字段在记录中的结束位置。个变长字段在记录中的结束位置。19001900经过字节交换是经过字节交换是0 x001

27、90 x0019,所以第一个变,所以第一个变长字段结束于长字段结束于2525字节处。接下来也是字节处。接下来也是0 x00190 x0019,所以第二个变长字段实际长度为,所以第二个变长字段实际长度为0 0,表明没有任何东西存储在变长数据区域。表明没有任何东西存储在变长数据区域。1c001c00经过字节交换是经过字节交换是0 x001c0 x001c,所以第三,所以第三个变长字段结束于个变长字段结束于2828字节处,而且整个记录也结束于字节处,而且整个记录也结束于2828字节处,换句话说,目前字节处,换句话说,目前整个记录的实际长度是整个记录的实际长度是2828个字节长。个字节长。 第第4章章

28、 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005184.3 SQL Server数据类型数据类型 4.3.1 数值型数据数值型数据 4.3.2 货币型数据货币型数据 4.3.3 字符型数据字符型数据 4.3.4 日期日期/时间数据类型时间数据类型 4.3.5 二进制数据类型二进制数据类型 4.3.5 双字节数据类型双字节数据类型 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005194.3.1 数值型数据数值型数据BigintBigint。可以存放从。可以存放

29、从-2-26363到到2 26363-1-1范围内的整型数据。以范围内的整型数据。以bigintbigint数据类型存储数据类型存储的每个值占用的每个值占用8 8个字节,共个字节,共6464位,其中位,其中6363位用于存储数字,位用于存储数字,1 1位用于表示正负。位用于表示正负。IntInt。也可以写作。也可以写作integerinteger,可以存储从,可以存储从-2-23131到到2 23131-1-1范围内的全部整数。以范围内的全部整数。以intint数据类型存储的每个值占用数据类型存储的每个值占用4 4个字节,共个字节,共3232位,其中位,其中3131位用于存储数字,位用于存储数

30、字,1 1位用于表示正负的区别。位用于表示正负的区别。SmallintSmallint。可以存储从。可以存储从-2-21515到到2 21515- 1- 1范围内的所有整数。以范围内的所有整数。以smallintsmallint数据类数据类型存储的每个值占用型存储的每个值占用2 2个字节,共个字节,共1616位,其中位,其中1515位用于存储数字,位用于存储数字,1 1位用于表示位用于表示正负的区别。正负的区别。TinyintTinyint。可以存储。可以存储0 0到到255255范围内的所有整数。以范围内的所有整数。以tinyinttinyint数据类型存储的每数据类型存储的每个值占用个值占

31、用1 1个字节。个字节。DecimalDecimal和和NumericNumeric。在。在SQL ServerSQL Server中,中,decimaldecimal和和numericnumeric型数据的最高精型数据的最高精度的可以达到度的可以达到3838位,也就是说必须在位,也就是说必须在-10-103838-1-1到到10103838-1-1之间。格式为:之间。格式为:DecimalDecimal(n,dn,d)或)或NumericNumeric(n,dn,d),其中),其中n n为总的位数,为总的位数,d d为小数位数。为小数位数。floatfloat和和realreal。float

32、float型数据范围从型数据范围从-1.79E+38-1.79E+38到到1.79E+381.79E+38,RealReal型数据范围型数据范围从从-3.40E+38-3.40E+38到到3.40E+383.40E+38。其中。其中floatfloat可采用科学记数法表示,格式为可采用科学记数法表示,格式为 : floatfloat(n n),),n n必须在必须在153153之间。之间。 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005204.3.2 4.3.2 货币型数据货币型数据 MoneyMoney。它存储的货币

33、值由。它存储的货币值由2 2个个4 4字节整数构成。前面字节整数构成。前面的一个的一个4 4字节表示货币值的整数部分,后面的一个字节表示货币值的整数部分,后面的一个4 4字字节表示货币值的小数部分。以节表示货币值的小数部分。以MoneyMoney存储的货币值的范存储的货币值的范围从围从-2-26363到到2 26363-1-1,可以精确到万分之一货币单位。,可以精确到万分之一货币单位。 SmallmoneySmallmoney。它存储的货币值由。它存储的货币值由2 2个个2 2字节整数构成。字节整数构成。前面的一个前面的一个2 2字节表示货币值的整数部分,后面的一个字节表示货币值的整数部分,后

34、面的一个2 2字节表示货币值的小数部分。以字节表示货币值的小数部分。以SmallmoneySmallmoney存储的货存储的货币值的范围从币值的范围从-214,748.3648-214,748.3648到到+214,748.3647+214,748.3647,也可,也可以精确到万分之一货币单位。以精确到万分之一货币单位。 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005214.3.3 4.3.3 字符型数据字符型数据 CharChar。利用。利用CharChar数据类型存储数据时,每个字符占用一个字节的存数据类型存储数据

35、时,每个字符占用一个字节的存储空间。储空间。CharChar数据类型使用固定长度来存储字符,最长可以容纳数据类型使用固定长度来存储字符,最长可以容纳80008000个字符。利用个字符。利用CharChar数据类型来定义表列或者定义变量时,应该给定数数据类型来定义表列或者定义变量时,应该给定数据的最大长度。如果实际数据的字符长度短于给定的最大长度,则多据的最大长度。如果实际数据的字符长度短于给定的最大长度,则多余的字节会用空格填充。如果实际数据的字符长度超过了给定的最大余的字节会用空格填充。如果实际数据的字符长度超过了给定的最大长度,则超过的字符将会被截断。在使用字符型常量为字符数据类型长度,则

36、超过的字符将会被截断。在使用字符型常量为字符数据类型赋值时,必须使用单引号(赋值时,必须使用单引号()将字符型常量括起来。)将字符型常量括起来。VarcharVarchar。VarcharVarchar数据类型的使用方式与数据类型的使用方式与CharChar数据类型类似。数据类型类似。SQL SQL Server Server 利用利用VarcharVarchar数据类型来存储最长可以达到数据类型来存储最长可以达到80008000字符的变长字字符的变长字符。与符。与Char Char 数据类型不同,数据类型不同,VarcharVarchar数据类型的存储空间随存储在表数据类型的存储空间随存储在

37、表列中的每一个数据的字符数的不同而变化。列中的每一个数据的字符数的不同而变化。TextText。当要存储的字符型数据非常庞大以至于。当要存储的字符型数据非常庞大以至于80008000字节完全不够用字节完全不够用时,时,CharChar和和VarcharVarchar数据类型都失去了作用。这时应该选择数据类型都失去了作用。这时应该选择TextText数据数据类型。类型。 TextText数据类型专门用于存储数量庞大的变长字符数据。最大数据类型专门用于存储数量庞大的变长字符数据。最大长度可以达到长度可以达到2 23131-1-1个字符,约个字符,约2GB2GB。 第第4章章 表的存储原理及完整性创

38、建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005224.3.4 4.3.4 日期日期/ /时间数据类型时间数据类型 DatetimeDatetime。DatetimeDatetime数据类型范围从数据类型范围从17531753年年1 1月月1 1日日到到99999999年年1212月月3131日,可以精确到千分之一秒。日,可以精确到千分之一秒。DatetimeDatetime数据类型的数据占用数据类型的数据占用8 8个字节的存储空间。个字节的存储空间。 SmalldatetimeSmalldatetime。SmalldatetimeSmalldateti

39、me数据范围从数据范围从19001900年年1 1月月1 1日到日到20792079年年6 6月月6 6日,可以精确到分。日,可以精确到分。SmalldatetimeSmalldatetime数据类型占数据类型占4 4个字节的存储空间。个字节的存储空间。 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005234.3.5 二进制数据类型二进制数据类型 所谓二进制数据是一些用十六进制来表示的数据。例如,所谓二进制数据是一些用十六进制来表示的数据。例如,十进制数据十进制数据245245表示成十六进制数据就应该是表示成十六进制数据

40、就应该是F5F5。 (1 1)binarybinary。具有固定的长度,最大长度可以达到。具有固定的长度,最大长度可以达到8K8K字节。字节。 (2 2)varbinaryvarbinary。具有不固定的长度,其最大长度也不。具有不固定的长度,其最大长度也不得超过得超过8K8K字节。字节。 (3)Image。该数据类型可用于存储字节数超过。该数据类型可用于存储字节数超过8K字字节的数据,比如节的数据,比如Microsoft Word文档、文档、Microsoft Excel图表以及图像数据(包括图表以及图像数据(包括.GIF、.BMP、.JPEG文件)等。文件)等。 第第4章章 表的存储原理及

41、完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005244.3.5 双字节数据类型双字节数据类型 (1 1)Nchar(nNchar(n) )。Nchar(nNchar(n) )是固定长度的双字节数据类型,是固定长度的双字节数据类型,括号里的括号里的n n用来定义数据的最大长度。用来定义数据的最大长度。n n的取值范围是的取值范围是1400014000。 (2 2)Nvarchar(nNvarchar(n) )。Nvarchar(nNvarchar(n) )数据类型存储可变长度数据类型存储可变长度的双字节数据类型,括号里的双字节数据类型,括号里的的n

42、 n用来定义数据的最大长度。用来定义数据的最大长度。n n的取值为的取值为0400004000。 (3)Ntext(n)。Ntext数据类型存储的是可变长度的双字数据类型存储的是可变长度的双字节字符,节字符,Ntext数据类型突破了前数据类型突破了前2种双字节数据类型不种双字节数据类型不能超过能超过4000字符的规定,最多可以存储多达字符的规定,最多可以存储多达230-1个双字个双字节字符。节字符。 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005254.4 数据表的创建和管理数据表的创建和管理 4.4.1 数据表结构的

43、创建数据表结构的创建 4.4.2 数据表结构的管理数据表结构的管理 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005264.4.1 数据表结构的创建 在在SQL Server 2005中,每个数据库中最多可以创中,每个数据库中最多可以创建建200万个表,用户创建数据库表时,最多可以定万个表,用户创建数据库表时,最多可以定义义1024列,也就是可以定义列,也就是可以定义1024个字段。个字段。 SQL Server 2000提供了两种方法创建数据库表:提供了两种方法创建数据库表: 第一种方法是利用企业管理器(第一种方法是利

44、用企业管理器(Enterprise Manager)创建表;)创建表; 另一种方法是利用另一种方法是利用Transact-SQL语句中的语句中的create命命令创建表。令创建表。第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005271. 利用利用create命令创建表命令创建表其语法形式如下:其语法形式如下: CREATE TABLE ( 列级完整性约束条件列级完整性约束条件 , 列级完整性约束条件列级完整性约束条件 , )第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL

45、 Server 2005281. 利用利用create命令创建表命令创建表参数说明:参数说明:(1 1) 是所要定义的基本表的名字。一个表它可以由一个或是所要定义的基本表的名字。一个表它可以由一个或多个属性组成。多个属性组成。(2 2) 一般取有实际意义的名字。一般取有实际意义的名字。(3 3) 可以是前面介绍的数据类型。可以是前面介绍的数据类型。(4 4)在)在SQL Server 2000SQL Server 2000中有下面几种完整性约束条件:中有下面几种完整性约束条件: 空值约束(空值约束(NULL or NOT NULL);主键约束();主键约束(primary key constr

46、aint);唯一性约束();唯一性约束(unique constraint);检查约束);检查约束(check constraint);缺省约束();缺省约束(default constraint);外部键);外部键约束(约束(foreign key constraint);规则();规则(rule);缺省值);缺省值(default)。)。 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005292关于创建表时运用约束的说明关于创建表时运用约束的说明 (1 1)空值约束()空值约束(NULL or NOT NULLNULL

47、 or NOT NULL)空值空值NULLNULL约束决定属性值是否允许为空值(约束决定属性值是否允许为空值(NULLNULL)。)。NULLNULL表示没表示没有输入任何内容,它不是零和空白,不允许为空值则用有输入任何内容,它不是零和空白,不允许为空值则用NOT NULLNOT NULL表示。表示。例如:设置属性例如:设置属性teacherteacher允许为空值。允许为空值。 CREATE TABLE t ( teacher char(8) NULL )第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005302关于创建表

48、时运用约束的说明关于创建表时运用约束的说明(2 2)主键约束()主键约束(primary key constraintprimary key constraint) 主健约束要求主健属性取值必须惟一,一个表只能包含一个主主健约束要求主健属性取值必须惟一,一个表只能包含一个主健约束。如果没有在主健约束中指定健约束。如果没有在主健约束中指定CLUSTEREDCLUSTERED或或NONCLUSTEREDNONCLUSTERED,并且没有为并且没有为UNIQUEUNIQUE约束指定聚集索引,则将对该主健约束用约束指定聚集索引,则将对该主健约束用CLUSTEREDCLUSTERED。主键约束主键约束S

49、QLSQL的语法形式如下:的语法形式如下: CONSTRAINT 约束名约束名 PRIMARY KEY CLUSTERED|NONCLUSTERED(列名(列名,n)第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 200531 例如:在执行创建产品信息表的操作时,指定产品编号为主键值。例如:在执行创建产品信息表的操作时,指定产品编号为主键值。 CREATE TABLE products (id char(10) NOT NULL,name char(20) NOT NULL,price money,quantity smalli

50、nt NULL,CONSTRAINT pk_products PRIMARY KEY CLUSTERED (id) )此例的主健名称是此例的主健名称是pk_products,在,在products表中关于表中关于id建立了一个索引排建立了一个索引排序。序。第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005322关于创建表时运用约束的说明关于创建表时运用约束的说明(3 3)唯一性约束()唯一性约束(unique constraintunique constraint)唯一性约束用于指定一个或者多个列的组合的值具有唯一性,以防

51、唯一性约束用于指定一个或者多个列的组合的值具有唯一性,以防止在列中输入重复的值。止在列中输入重复的值。 创建唯一性约束创建唯一性约束SQLSQL语句:语句:CONSTRAINT 约束名约束名 UNIQUE CLUSTERED|NONCLUSTERED(列名(列名,n) 例:例: CREATE TABLE student1 (sno char(8), sname char(16), constraint pk_student primary key(sno), constraint uniq_student unique(sname) 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性

52、创建管理 大型数据库大型数据库 SQL Server 2005332关于创建表时运用约束的说明关于创建表时运用约束的说明(4 4)检查约束()检查约束(check constraintcheck constraint)使用检查约束时,应该注意以下几点:使用检查约束时,应该注意以下几点: 一个列级检查约束只能与限制的字段有关;一个表级检查约一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关。束只能与限制的表中字段有关。 一个表中可以定义多个检查约束。一个表中可以定义多个检查约束。 每个每个CREATE TABLECREATE TABLE语句中每个字段只能定义一个检查约

53、束。语句中每个字段只能定义一个检查约束。 在多个字段上定义检查约束,则必须将检查约束定义为表级在多个字段上定义检查约束,则必须将检查约束定义为表级约束。约束。 检查约束中不能包含子查询。检查约束中不能包含子查询。创建检查约束创建检查约束SQLSQL语法格式为:语法格式为: CONSTRAINT constraint_nameCHECK NOT FOR REPLICATION (logical_expression) 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 200534例如:创建一个职工信息表,其中输入性别字段值时,只能接

54、受例如:创建一个职工信息表,其中输入性别字段值时,只能接受“F”F”或或者者“M”M”,并且为,并且为phonenumphonenum字段创建检查约束,限制只能输入类似字段创建检查约束,限制只能输入类似0108079865401080798654之类的数据,而不能随意输入其他数据。之类的数据,而不能随意输入其他数据。 create table employee( Id char(8), name char(8) CHECK(NAME LIKE A-C,a-cA-Z,a-zA-ZA-Z), sex char(2), phonenum int, constraint chk_sex check(s

55、ex in (F,M)default F, Constraint chk_phonenum check(phonenum like (010)8,90-90-90-9 0-90-90-90-9))第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005352关于创建表时运用约束的说明关于创建表时运用约束的说明(6 6)外部键约束)外部键约束外部键约束用于强制参照完整性,提供单个字段或者多个字段的外部键约束用于强制参照完整性,提供单个字段或者多个字段的参照完整性。当使用外部键约束时,应该考虑以下几个因素:参照完整性。当使用外部键约

56、束时,应该考虑以下几个因素: 外部键约束提供了字段参照完整性。外部键约束提供了字段参照完整性。 外部键从句中的字段数目和每个字段指定的数据类型必须和外部键从句中的字段数目和每个字段指定的数据类型必须和REFERENCESREFERENCES从句中的字段相匹配。从句中的字段相匹配。 外部键约束不能自动创建索引,需要用户手动创建。外部键约束不能自动创建索引,需要用户手动创建。 一个表中最多可以有一个表中最多可以有3131个外部键约束。个外部键约束。 在临时表中,不能使用外部键约束。在临时表中,不能使用外部键约束。 主键和外部键的数据类型必须严格匹配。主键和外部键的数据类型必须严格匹配。外键约束外键

57、约束SQLSQL的语法形式如下:的语法形式如下:CONSTRAINT CONSTRAINT 约束名约束名 FOREIGN KEY FOREIGN KEY (外键列名)(外键列名)REFERENCES REFERENCES 参照表(参照列名)参照表(参照列名) 第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 200536外键约束主要用来维护两个表之间的一致性关系。外键约束主要用来维护两个表之间的一致性关系。 外键的建立主要是通过将一个表的主键所在列包含在另一外键的建立主要是通过将一个表的主键所在列包含在另一个表中,这些列就是另一个

58、表的外键。个表中,这些列就是另一个表的外键。外键的作用不只是对输入自身的数据进行限制,同时也限制了对主键所在表的数据进行修改。用户无法对主键里的数据进行修改和删除,除非事先删除或修改外键引用的数据。第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 200537 例如:学生表例如:学生表S S(SNOSNO,SNAMESNAME,)中的,)中的SNOSNO是是S S表的主健,课程表表的主健,课程表C C(CNOCNO,CNAMECNAME,)中的,)中的CNOCNO是是C C表的主健,而学习表表的主健,而学习表SCSC(SNOSNO

59、,CNOCNO,GRADEGRADE)中的)中的SNOSNO、CNOCNO是是SCSC表的主健,并且表的主健,并且SNOSNO和和CNOCNO又分别相对于又分别相对于S S表表和和C C表是表是SCSC表的外健。则创建表的外健。则创建SCSC表的表的SQLSQL语句如下:语句如下: CREATE TABLE SC ( SNO CHAR(10) NOT NULL, CNO CHAR(6) NOT NULL, GRADE TINYINT DEFAULT NULL, CONSTRAINT PK_SC PRIMARY KEY ( SNO,CNO ), CONSTRAINT FK_SC FOREIGN

60、KEY ( SNO ) REFERENCES Student(Sno), FOREIGN KEY ( CNO ) REFERENCES Course(Cno) )第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 大型数据库大型数据库 SQL Server 2005383数据表结构创建实例数据表结构创建实例 【例【例4-14-1】创建数据库】创建数据库“教学管理教学管理”的数据表学生基本的数据表学生基本资料表,数据表结构如表资料表,数据表结构如表1-31-3、表的完整性约束如表、表的完整性约束如表1-1-8 8、表、表1-91-9所示。所示。 方法一:使用对象资源管理器创建方

温馨提示

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

最新文档

评论

0/150

提交评论