guo第4章表的存储原理及完整性创建管理

上传人:ldj****22 文档编号:48828299 上传时间:2018-07-21 格式:PPT 页数:52 大小:417.50KB
返回 下载 相关 举报
guo第4章表的存储原理及完整性创建管理_第1页
第1页 / 共52页
guo第4章表的存储原理及完整性创建管理_第2页
第2页 / 共52页
guo第4章表的存储原理及完整性创建管理_第3页
第3页 / 共52页
guo第4章表的存储原理及完整性创建管理_第4页
第4页 / 共52页
guo第4章表的存储原理及完整性创建管理_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《guo第4章表的存储原理及完整性创建管理》由会员分享,可在线阅读,更多相关《guo第4章表的存储原理及完整性创建管理(52页珍藏版)》请在金锄头文库上搜索。

1、第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 2005第4章 表的存储原理及完整性创建管理 4.1 SQL Server表的类型 4.2 表的存储原理 4.3 SQL Server数据类型 4.4 数据表的创建和管理 1第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 20054.1 SQL Server表的类型 4.1.1 SQL Server的临时表 4.1.2 SQL Server的系统表 2第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 20054.1.1 SQL Server的临时表 SQL Server中的数据

2、表分为: 永久表:创建后一直存储在数据库文件中,直到用户 删除为止。 临时表 临时表分两种: 局部临时表:表名用#开头。只能由创建它的用户使用 ,在该用户连接断开时,它被自动删除。 全局临时表:表名用#开头。当前所有连接用户都可 以使用,它在最后一个会话结束时被自动删除。 系统根据表名前有无#符号确定创建的是临时表还是永 久表。3第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 20054.2.2 SQL Server的系统表 一些系统表只存在于master数据库,它们包含系统 级信息。在SQL Server 2000里共有18个表,在SQL Server 2005里对应

3、20个视图。 。而一些系统表则存在于每一个数据库(包括master 数据库),它们包含属于这个特定数据库的对象和资 源的相关信息。在SQL Server 2000里共有17个表,在 SQL Server 2005里对应22个视图。 注意:不允许使用SQL语句直接修改系统表中的内 容;不允许编写程序直接访问系统表中的信息;如果 需要系统表信息,可以通过系统的存储过程和系统提 供的函数进行。 4第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 20054.2 表的存储原理 4.2.1 内部存储概述 4.2.2 SQL Server数据记录结构 5第4章 表的存储原理及完整性创

4、建管理 大型数据库 SQL Server 20054.1.1 内部存储概述 表是有关某个特定实例的数据集合,在关系数据库中处于核心地位。 创建一个表,就会有一行或多行插入到用来管理这个表 的多个系统表里。至少要写信息到sysobjects、sysindexes和syscolumns这三个系统表里,当新建的表有外码约束时,相关的信息还会插入到sysrefrences系统表里。6第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 2005 Sysobjects主要记录新表的基本信息,如表名、对象ID以及表的所有者等等。 Syscolumns主要记录新表列的信息,如列名、类型和长

5、度等。 Sysindexes系统表记录包含指向新表所使用的存储空间的指针和有关新表大小的信息。 sysrefrences系统表里记录参照表的外键信息。 例如:创建一个表,它在系统表中的记录信息如下图所示:7第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 2005CREATE TABLE 课程表(课号 CHAR (6) NOT NULL ,课名 CHAR (20) NOT NULL ,教材名称 CHAR (20) NULL ,编著者 CHAR (10) NULL ,出版社 CHAR (20) NULL , 版号 CHAR (15) NULL ,定价 MONEY NULL,

6、PRIMARY KEY(课号) ) 8第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 2005注意: 当一个新表刚创建时,在插入第一行数据之前系统不 会立即为其分配存储空间,因此Sysindexes表中指示页地址和预留存储空间的列将都是0值。 如果在该表上定义了PRIMARY KEY或UNIQUE约束,而PRIMARY KEY或UNIQUE约束的背后是由簇集索引支持的,则该表在Sysindexes中对应行的indid值为1。 任何有非簇集索引支持的其他约束在Sysindexes表中都有一行,而且该行的indid值在2到250之间。 9第4章 表的存储原理及完整性创建管理

7、 大型数据库 SQL Server 20054.2.2 数据行(记录)结构 在 SQL Server 中,数据存储的基本单位是页。 紧跟着页头的就是存储表的真正数据行区域。单个数据 行的最大长度是8060字节。 数据行不能跨页存储(文本和图像例外)。页内数据行 的多少依赖于表的结构和要存储的数据。 如果一个表的所有列都是定长,那么该表在每一页上存 储相同数目的行。 如果一个表里有变长列,那么该表总是在每一页上存储 尽可能多的行。10第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 20054.2.2 数据行(记录)结构1、定长记录 在定长记录里,每个字段都有固定的长度,而

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

9、 大型数据库 SQL Server 20051、 SQL Server定长记录的存储首先来看最简单的情况,记录中所有字段都是定长的。 CREATE TABLE Fixed ( col1 int NOT NULL col2 char(5) NOT NULL col3 char(3) NULL col4 float NOT NULL ) 当这个表被创建以后,就有类似下面一个记录被插入到sysindexes系统表中: id name indid first minlen 2099048 Fixed 0 0x000000000000 24 而其各个字段则会被插入到syscolumns系统表中: nam

10、e colid xtype length xoffset col1 1 56 4 4 col2 2 175 5 8 col3 3 175 3 13 col4 4 62 8 1612第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 20051、 SQL Server定长记录的存储当往Fixed表中插入一个记录数据时,例如:INSERT INTO Fixed VALUES(123,ABCD,NULL,45.5)Fixed表在sysindexes系统表里的内容就会发生变化:id name indid first minlen2099048 Fixed 0 0x720000000

11、000 24这说明在插入了一记录数据之后,SQL Server就为Fixed表分配了 一个数据页。Fixed表只包含四个定长字段,sysindexes表中 minlen字段的值表示记录的最小长度,该长度恰好是syscolumns 表中表示字段长度的length的数字之和再加上4个字节。其中额外 的4个字节是用于记录字段数目的两个字节和表示字段中NULL的字 节数。 13第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 2005第一个字节是状态位A,它的值是0x10,表示只有位4是1,其他位 都是0,因此该记录没有变长字段(如果位5为1说明存在变长字段 )。 最后一个字节是

12、NULL位图,其值4意味只有第三位是1,表示第三个 字段是NULL。1、 SQL Server定长记录的存储14第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 20052、 SQL Server变长记录的存储 CREATE TABLE Variable ( col1 char(3) NOT NULL col2 varchar(15) NOT NULL col3 varchar(5) NULL col4 varchar(10) NOT NULL col5 smallint NOT NULL ) 当这个表被创建以后,就有类似下面一个记录被插入到sysindexes系统表中:

13、 id name indid first minlen 18099105 Variable 0 0x000000000000 9 而其各个字段则会被插入到syscolumns系统表中: name colid xtype length xoffset col1 1 175 3 4 col2 2 167 15 -1 col3 3 167 5 -1 col4 4 167 10 -1 col5 5 52 2 715第4章 表的存储原理及完整性创建管理 大型数据库 SQL Server 20052、 SQL Server变长记录的存储当往Variable表中插入一个记录数据时,例如: INSERT INTO Variable VALUES(xyz,ABCDe,NULL, 123,999)Variable表在sysindexes系统表里的内容就会发生变化:id name indid first minlen 18099105 Variable 0 0x880000000000 9定长字段的数据位于记录中由syscolum

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号