表的存储原理及完整性创建.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《表的存储原理及完整性创建.ppt》由会员分享,可在线阅读,更多相关《表的存储原理及完整性创建.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、优秀精品课件文档资料优秀精品课件文档资料SQL Server第第4章章表的存储原理及完整性创建管理表的存储原理及完整性创建管理第第4章章 表的存储原理及完整性创建管理表的存储原理及完整性创建管理 4.1 表的存储原理表的存储原理 4.2 SQL Server表的类型表的类型 4.3 SQL Server数据类型数据类型 4.4 数据表的创建和管理数据表的创建和管理 4.1 表的存储原理表的存储原理4.1.1 内部存储概述内部存储概述 4.1.2 数据行(记录)结构数据行(记录)结构4.1.1 内部存储概述内部存储概述 表是有关某个特定实例的数据集合,在关系数据库中表是有关某个特定实例的数据集合
2、,在关系数据库中处于核心地位。处于核心地位。创建一个表,就会有一行或多行插入到用来管理这个创建一个表,就会有一行或多行插入到用来管理这个表的多个系统表里。例如要写信息到表的多个系统表里。例如要写信息到 sysobjects、sysindexes和和syscolumns等系统表里。等系统表里。通过查询通过查询sys.tables、sys.objects、sys.indexes、和和sys.columns等系统视图可以查看相关信息。等系统视图可以查看相关信息。Sysobjects主要记录新对象的基本信息,如对象名、对主要记录新对象的基本信息,如对象名、对象象ID等等。等等。Syscolumns主要
3、记录新表列的信息,如列名、类型和主要记录新表列的信息,如列名、类型和长度等。长度等。Sysindexes系统表记录索引等相关信息。系统表记录索引等相关信息。注意:注意:当一个新表刚创建时,在插入第一行数据之前系统不当一个新表刚创建时,在插入第一行数据之前系统不会立即为其分配存储空间,因此会立即为其分配存储空间,因此Sysindexes表中指表中指示页地址和预留存储空间的列将都是示页地址和预留存储空间的列将都是0值。值。如果在该表上定义了如果在该表上定义了PRIMARY KEY或或UNIQUE约束,约束,而而PRIMARY KEY或或UNIQUE约束的背后是由簇集索约束的背后是由簇集索引支持的,
4、则该表在引支持的,则该表在Sysindexes中对应行的中对应行的index_id值为值为1。任何有非簇集索引支持的其他约束在任何有非簇集索引支持的其他约束在Sysindexes表表中都有一行,而且该行的中都有一行,而且该行的index_id值在值在2到到250之间。之间。4.1.2 数据行(记录)结构数据行(记录)结构 在在 SQL Server 中,数据存储的基本单位是中,数据存储的基本单位是页页。紧跟着紧跟着页头页头的就是存储表的真正数据行区域。单个数的就是存储表的真正数据行区域。单个数据行的最大长度是据行的最大长度是8060字节。字节。数据行不能跨页存储(文本和图像例外)。页内数据数据
5、行不能跨页存储(文本和图像例外)。页内数据行的多少依赖于表的结构和要存储的数据。行的多少依赖于表的结构和要存储的数据。如果一个表的所有列都是如果一个表的所有列都是定长定长,那么该表在每一页上,那么该表在每一页上存储相同数目的行。存储相同数目的行。如果一个表里有如果一个表里有变长列变长列,那么该表总是在每一页上存,那么该表总是在每一页上存储尽可能多的行。储尽可能多的行。4.1.2 数据行(记录)结构数据行(记录)结构1 1、定长记录、定长记录在在定定长长记记录录里里,每每个个字字段段都都有有固固定定的的长长度度,而而且且字字段段数数也也是是固固定定的的。这这种种记记录录的的字字段段能能够够连连续
6、续存存储储,因因此此在在给给定定记记录录地地址址的的情情况况下下,借借助助系系统统目目录录里里有有关关字字段段的的长长度度信信息息就就能能计计算算出出某某个个特殊字段的地址。特殊字段的地址。2 2、变长记录、变长记录对对于于变变长长记记录录来来说说,一一种种可可能能的的记记录录组组织织方方式式就就是是像像定定长长记记录录一一样样连连续续地地存存放放字字段段,字字段段之之间间通通过过分分割割符符隔隔开开。这这种种组组织织方方式需要扫描记录才能定位需要访问的字段。式需要扫描记录才能定位需要访问的字段。另另一一种种方方法法是是在在记记录录开开始始处处预预留留一一些些空空间间作作为为存存放放一一个个整
7、整数数偏偏移移量量数数组组的的空空间间,数数组组中中的的第第I I个个整整数数表表示示记记录录的的第第I I个个字字段段的的其其始始地地址址,当当然然这这个个地地址址是是相相对对于于记记录录的的起起始始地地址址的的。另另外外在在数数组组中中也也存存储储记记录录尾尾部部的的偏偏移移量量,这这个个偏偏移移量量用用来来识识别别最最后后一一个字段的结束位置。个字段的结束位置。1 1、SQL ServerSQL Server定长记录的存储定长记录的存储首先来看最简单的情况,记录中所有字段都是定长的。首先来看最简单的情况,记录中所有字段都是定长的。CREATE TABLE FixedCREATE TABL
8、E Fixed(col1 int NOT NULL,col1 int NOT NULL,col2 char(5)NOT NULL,col2 char(5)NOT NULL,col3 char(3)NULL,col3 char(3)NULL,col4 float NOT NULLcol4 float NOT NULL)当当这这个个表表被被创创建建以以后后,就就有有一一个个记记录录被被插插入入到到systablessystables系统表中系统表中;而其各个字段则会被插入到而其各个字段则会被插入到syscolumnssyscolumns系统表中。系统表中。第一个字节第一个字节是状态位是状态位A A
9、,它的值是,它的值是0 x100 x10,表示只有位,表示只有位4 4是是1 1,其他位都,其他位都是是0 0,因此该记录没有变长字段(如果位,因此该记录没有变长字段(如果位5 5为为1 1说明存在变长字段)。说明存在变长字段)。最最后后一一个个字字节节是是NULLNULL位位图图,其其值值4 4意意味味只只有有第第三三位位是是1 1,表表示示第第三三个个字段是字段是NULLNULL。1 1、SQL ServerSQL Server定长记录的存储定长记录的存储2 2、SQL ServerSQL Server变长记录的存储变长记录的存储 CREATE TABLE VariableCREATE T
10、ABLE Variable(col1 char(3)NOT NULL,col1 char(3)NOT NULL,col2 varchar(15)NOT NULL,col2 varchar(15)NOT NULL,col3 varchar(5)NULL,col3 varchar(5)NULL,col4 varchar(10)NOT NULL,col4 varchar(10)NOT NULL,col5 smallint NOT NULLcol5 smallint NOT NULL)当当这这个个表表被被创创建建以以后后,就就有有一一个个记记录录被被插插入入到到systablessystables系统
11、表中系统表中;而其各个字段则会被插入到而其各个字段则会被插入到syscolumnssyscolumns系统表中。系统表中。2 2、SQL ServerSQL Server变长记录的存储变长记录的存储往往VariableVariable表中插入一个记录数据时,例如:表中插入一个记录数据时,例如:INSERT INTO Variable INSERT INTO Variable VALUES(VALUES(xyzxyz,ABCDeABCDe,NULL,NULL,123123,999),999)为了找到变长字段,首先要确定记录中列偏移数组的位置。在表示总字段数的为了找到变长字段,首先要确定记录中列偏
12、移数组的位置。在表示总字段数的2 2个个字节(其值是字节(其值是05000500)和表示位图的)和表示位图的1 1字节(其值为字节(其值为0404)之后就是变长字段数的两个)之后就是变长字段数的两个字节,在本例中其值是字节,在本例中其值是03000300,换算成十进制是,换算成十进制是3 3,说明该记录有,说明该记录有3 3个变长字段存在。个变长字段存在。紧跟其后的字节就是变长字段偏移数组。该例变长字段偏移数组用三个紧跟其后的字节就是变长字段偏移数组。该例变长字段偏移数组用三个2 2字节来表字节来表示示3 3个变长字段在记录中的结束位置。个变长字段在记录中的结束位置。19001900经过字节交
13、换是经过字节交换是0 x00190 x0019,所以第一个变,所以第一个变长字段结束于长字段结束于2525字节处。接下来也是字节处。接下来也是0 x00190 x0019,所以第二个变长字段实际长度为,所以第二个变长字段实际长度为0 0,表明没有任何东西存储在变长数据区域。表明没有任何东西存储在变长数据区域。1c001c00经过字节交换是经过字节交换是0 x001c0 x001c,所以第三,所以第三个变长字段结束于个变长字段结束于2828字节处,而且整个记录也结束于字节处,而且整个记录也结束于2828字节处,换句话说,目前字节处,换句话说,目前整个记录的实际长度是整个记录的实际长度是2828个
14、字节长。个字节长。4.2 SQL Server表的类型表的类型 4.2.1 SQL Server的临时表的临时表 4.2.2 SQL Server的系统表的系统表 4.2 SQL Server表的类型表的类型SQL Server中的数据表分为:中的数据表分为:永久表永久表:创建后一直存储在数据库文件中,直到用:创建后一直存储在数据库文件中,直到用户删除为止。户删除为止。临时表临时表:本地临时表和全局临时表:本地临时表和全局临时表系统根据表名前系统根据表名前有无有无#符号符号确定创建的是临时表还是确定创建的是临时表还是永久表。永久表。4.2.1 SQL Server的临时表的临时表临时表分两种:
15、临时表分两种:本地临时表本地临时表:表名用:表名用#开头。只能由创建它的用户使用,开头。只能由创建它的用户使用,在该用户连接断开时,它被自动删除。在该用户连接断开时,它被自动删除。全局临时表全局临时表:表名用:表名用#开头。当前所有连接用户都可以开头。当前所有连接用户都可以使用,它在最后一个会话结束时被自动删除。使用,它在最后一个会话结束时被自动删除。4.2.2 SQL Server的系统表的系统表 系系统统表表中中的的数数据据组组成成了了SQL SQL ServerServer系系统统利利用用的的数数据据字字典典,系系统统表表记记录录所所有有服服务务器器活活动动的的信信息息,是是维维护护所所
16、有有存存储储在在其其中中的的所所有有对对象象、数数据据类类型型、约约束束、配配置置选选项项等等可可利利用用资源的相关信息。资源的相关信息。一些系统表只存在于一些系统表只存在于mastermaster数据库,它们包含系统级信数据库,它们包含系统级信息。息。而一些系统表则存在于每一个数据库(包括而一些系统表则存在于每一个数据库(包括mastermaster数据数据库),它们包含属于这个特定数据库的对象和资源的相库),它们包含属于这个特定数据库的对象和资源的相关信息。关信息。注意:注意:不允许使用不允许使用SQLSQL语句直接修改系统表中的内容;语句直接修改系统表中的内容;如果需要系统表信息,可以通
17、过系统的存储过程和系统如果需要系统表信息,可以通过系统的存储过程和系统提供的函数进行。提供的函数进行。4.3 SQL Server数据类型数据类型 4.3.1 数值型数据数值型数据 4.3.2 货币型数据货币型数据 4.3.3 字符型数据字符型数据 4.3.4 日期日期/时间数据类型时间数据类型 4.3.5 二进制数据类型二进制数据类型 4.3.5 双字节数据类型双字节数据类型 4.3.1 数值型数据数值型数据BigintBigint。可可以以存存放放从从-2-26363到到2 26363-1-1范范围围内内的的整整型型数数据据。以以bigintbigint数数据据类类型型存存储储的的每每个个
18、值值占占用用8 8个个字字节节,共共6464位位,其其中中6363位位用用于于存存储储数数字字,1 1位位用用于于表表示正负。示正负。IntInt。也可以写作。也可以写作integerinteger,可以存储从,可以存储从-2-23131到到2 23131-1-1范围内的全部整数。范围内的全部整数。以以intint数据类型存储的每个值占用数据类型存储的每个值占用4 4个字节个字节,共,共3232位,其中位,其中3131位用于存储数位用于存储数字,字,1 1位用于表示正负的区别。位用于表示正负的区别。SmallintSmallint。可可以以存存储储从从-2-21515到到2 21515-1 1
19、范范围围内内的的所所有有整整数数。以以smallintsmallint数数据据类类型型存存储储的的每每个个值值占占用用2 2个个字字节节,共共1616位位,其其中中1515位位用用于于存存储储数数字字,1 1位位用用于表示正负的区别。于表示正负的区别。TinyintTinyint。可可以以存存储储0 0到到255255范范围围内内的的所所有有整整数数。以以tinyinttinyint数数据据类类型型存存储储的每个值占用的每个值占用1 1个字节个字节。DecimalDecimal和和NumericNumeric。在在SQL SQL ServerServer中中,decimaldecimal和和n
20、umericnumeric型型数数据据的的最最高高精精度度的的可可以以达达到到3838位位,也也就就是是说说必必须须在在-10-103838-1-1到到10103838-1-1之之间间。格格式式为为:DecimalDecimal(n,dn,d)或)或NumericNumeric(n,dn,d),),其中其中n n为总的位数,为总的位数,d d为小数位数。为小数位数。floatfloat和和realreal。floatfloat型型数数据据范范围围从从-1.79E+38-1.79E+38到到1.79E+381.79E+38,RealReal型型数数据据范范围围从从-3.40E+38-3.40E+
21、38到到3.40E+383.40E+38。其其中中floatfloat可可采采用用科科学学记记数数法法表表示示,格格式式为为 :floatfloat(n n),),n n必须在必须在153153之间。之间。4.3.2 4.3.2 货币型数据货币型数据 MoneyMoney。它它存存储储的的货货币币值值由由2 2个个4 4字字节节整整数数构构成成。前前面面的的一一个个4 4字字节节表表示示货货币币值值的的整整数数部部分分,后后面面的的一一个个4 4字字节节表表示示货货币币值值的的小小数数部部分分。以以MoneyMoney存存储储的的货货币币值值的的范范围围从从-2-26363到到2 26363-
22、1-1,可可以以精确到万分之一货币单位。精确到万分之一货币单位。SmallmoneySmallmoney。它存储的货币值由。它存储的货币值由2 2个个2 2字节整数构成。前面的字节整数构成。前面的一个一个2 2字节表示货币值的整数部分,后面的一个字节表示货币值的整数部分,后面的一个2 2字节表示货币字节表示货币值的小数部分。以值的小数部分。以SmallmoneySmallmoney存储的货币值的范围从存储的货币值的范围从-214,748.3648214,748.3648到到+214,748.3647+214,748.3647,也可以精确到万分之一货币,也可以精确到万分之一货币单位。单位。4.3
23、.3 4.3.3 字符型数据字符型数据 CharChar。利利用用CharChar数数据据类类型型存存储储数数据据时时,每每个个字字符符占占用用一一个个字字节节的的存存储储空空间间。CharChar数数据据类类型型使使用用固固定定长长度度来来存存储储字字符符,最最长长可可以以容容纳纳80008000个个字字符符。利利用用CharChar数数据据类类型型来来定定义义表表列列或或者者定定义义变变量量时时,应应该该给给定定数数据据的的最最大大长长度度。如如果果实实际际数数据据的的字字符符长长度度短短于于给给定定的的最最大大长长度度,则则多多余余的的字字节节会会用用空空格格填填充充。如如果果实实际际数
24、数据据的的字字符符长长度度超超过过了了给给定定的的最最大大长长度度,则则超超过过的的字字符符将将会会被被截截断断。在在使使用用字字符符型型常常量量为为字字符符数数据据类类型型赋赋值值时时,必必须须使使用用单单引引号号()将将字字符型常量括起来。符型常量括起来。VarcharVarchar。VarcharVarchar数据类型的使用方式与数据类型的使用方式与CharChar数据类型类似。数据类型类似。SQL Server SQL Server 利用利用VarcharVarchar数据类型来存储最长可以达到数据类型来存储最长可以达到80008000字符字符的变长字符。与的变长字符。与Char Ch
25、ar 数据类型不同,数据类型不同,VarcharVarchar数据类型的存储空数据类型的存储空间随存储在表列中的每一个数据的字符数的不同而间随存储在表列中的每一个数据的字符数的不同而变化变化。TextText。当要存储的字符型数据非常庞大以至于。当要存储的字符型数据非常庞大以至于80008000字节完全不字节完全不够用时,够用时,CharChar和和VarcharVarchar数据类型都失去了作用。这时应该选择数据类型都失去了作用。这时应该选择TextText数据类型。数据类型。TextText数据类型专门用于存储数据类型专门用于存储数量庞大的变长字符数量庞大的变长字符数据。最大长度可以达到数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 原理 完整性 创建
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内