表的存储原理及完整性创建

表的存储原理及完整性创建

ID:26753212

大小:1.43 MB

页数:53页

时间:2018-11-29

表的存储原理及完整性创建_第1页
表的存储原理及完整性创建_第2页
表的存储原理及完整性创建_第3页
表的存储原理及完整性创建_第4页
表的存储原理及完整性创建_第5页
资源描述:

《表的存储原理及完整性创建》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、优秀精品课件文档资料SQLServer第4章表的存储原理及完整性创建管理第4章表的存储原理及完整性创建管理4.1表的存储原理4.2SQLServer表的类型4.3SQLServer数据类型4.4数据表的创建和管理4.1表的存储原理4.1.1内部存储概述4.1.2数据行(记录)结构4.1.1内部存储概述表是有关某个特定实例的数据集合,在关系数据库中处于核心地位。创建一个表,就会有一行或多行插入到用来管理这个表的多个系统表里。例如要写信息到sysobjects、sysindexes和syscolumns等系统表里。通过查询sys.tables、sys

2、.objects、sys.indexes、和sys.columns等系统视图可以查看相关信息。Sysobjects主要记录新对象的基本信息,如对象名、对象ID等等。Syscolumns主要记录新表列的信息,如列名、类型和长度等。Sysindexes系统表记录索引等相关信息。注意:当一个新表刚创建时,在插入第一行数据之前系统不会立即为其分配存储空间,因此Sysindexes表中指示页地址和预留存储空间的列将都是0值。如果在该表上定义了PRIMARYKEY或UNIQUE约束,而PRIMARYKEY或UNIQUE约束的背后是由簇集索引支持的,则该表在S

3、ysindexes中对应行的index_id值为1。任何有非簇集索引支持的其他约束在Sysindexes表中都有一行,而且该行的index_id值在2到250之间。4.1.2数据行(记录)结构在SQLServer中,数据存储的基本单位是页。紧跟着页头的就是存储表的真正数据行区域。单个数据行的最大长度是8060字节。数据行不能跨页存储(文本和图像例外)。页内数据行的多少依赖于表的结构和要存储的数据。如果一个表的所有列都是定长,那么该表在每一页上存储相同数目的行。如果一个表里有变长列,那么该表总是在每一页上存储尽可能多的行。4.1.2数据行(记录)结

4、构1、定长记录在定长记录里,每个字段都有固定的长度,而且字段数也是固定的。这种记录的字段能够连续存储,因此在给定记录地址的情况下,借助系统目录里有关字段的长度信息就能计算出某个特殊字段的地址。2、变长记录对于变长记录来说,一种可能的记录组织方式就是像定长记录一样连续地存放字段,字段之间通过分割符隔开。这种组织方式需要扫描记录才能定位需要访问的字段。另一种方法是在记录开始处预留一些空间作为存放一个整数偏移量数组的空间,数组中的第I个整数表示记录的第I个字段的其始地址,当然这个地址是相对于记录的起始地址的。另外在数组中也存储记录尾部的偏移量,这个偏移

5、量用来识别最后一个字段的结束位置。1、SQLServer定长记录的存储首先来看最简单的情况,记录中所有字段都是定长的。CREATETABLEFixed(col1intNOTNULL,col2char(5)NOTNULL,col3char(3)NULL,col4floatNOTNULL)当这个表被创建以后,就有一个记录被插入到systables系统表中;而其各个字段则会被插入到syscolumns系统表中。第一个字节是状态位A,它的值是0x10,表示只有位4是1,其他位都是0,因此该记录没有变长字段(如果位5为1说明存在变长字段)。最后一个字节是N

6、ULL位图,其值4意味只有第三位是1,表示第三个字段是NULL。1、SQLServer定长记录的存储2、SQLServer变长记录的存储CREATETABLEVariable(col1char(3)NOTNULL,col2varchar(15)NOTNULL,col3varchar(5)NULL,col4varchar(10)NOTNULL,col5smallintNOTNULL)当这个表被创建以后,就有一个记录被插入到systables系统表中;而其各个字段则会被插入到syscolumns系统表中。2、SQLServer变长记录的存储往Vari

7、able表中插入一个记录数据时,例如:INSERTINTOVariableVALUES(‘xyz’,‘ABCDe’,NULL,‘123’,999)为了找到变长字段,首先要确定记录中列偏移数组的位置。在表示总字段数的2个字节(其值是0500)和表示位图的1字节(其值为04)之后就是变长字段数的两个字节,在本例中其值是0300,换算成十进制是3,说明该记录有3个变长字段存在。紧跟其后的字节就是变长字段偏移数组。该例变长字段偏移数组用三个2字节来表示3个变长字段在记录中的结束位置。1900经过字节交换是0x0019,所以第一个变长字段结束于25字节处。

8、接下来也是0x0019,所以第二个变长字段实际长度为0,表明没有任何东西存储在变长数据区域。1c00经过字节交换是0x001c,所以第三

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。