欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:90604859       资源大小:687KB        全文页数:53页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    优秀精品课件文档资料优秀精品课件文档资料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 内部存储概述内部存储概述 表是有关某个特定实例的数据集合,在关系数据库中表是有关某个特定实例的数据集合,在关系数据库中处于核心地位。处于核心地位。创建一个表,就会有一行或多行插入到用来管理这个创建一个表,就会有一行或多行插入到用来管理这个表的多个系统表里。例如要写信息到表的多个系统表里。例如要写信息到 sysobjects、sysindexes和和syscolumns等系统表里。等系统表里。通过查询通过查询sys.tables、sys.objects、sys.indexes、和和sys.columns等系统视图可以查看相关信息。等系统视图可以查看相关信息。Sysobjects主要记录新对象的基本信息,如对象名、对主要记录新对象的基本信息,如对象名、对象象ID等等。等等。Syscolumns主要记录新表列的信息,如列名、类型和主要记录新表列的信息,如列名、类型和长度等。长度等。Sysindexes系统表记录索引等相关信息。系统表记录索引等相关信息。注意:注意:当一个新表刚创建时,在插入第一行数据之前系统不当一个新表刚创建时,在插入第一行数据之前系统不会立即为其分配存储空间,因此会立即为其分配存储空间,因此Sysindexes表中指表中指示页地址和预留存储空间的列将都是示页地址和预留存储空间的列将都是0值。值。如果在该表上定义了如果在该表上定义了PRIMARY KEY或或UNIQUE约束,约束,而而PRIMARY KEY或或UNIQUE约束的背后是由簇集索约束的背后是由簇集索引支持的,则该表在引支持的,则该表在Sysindexes中对应行的中对应行的index_id值为值为1。任何有非簇集索引支持的其他约束在任何有非簇集索引支持的其他约束在Sysindexes表表中都有一行,而且该行的中都有一行,而且该行的index_id值在值在2到到250之间。之间。4.1.2 数据行(记录)结构数据行(记录)结构 在在 SQL Server 中,数据存储的基本单位是中,数据存储的基本单位是页页。紧跟着紧跟着页头页头的就是存储表的真正数据行区域。单个数的就是存储表的真正数据行区域。单个数据行的最大长度是据行的最大长度是8060字节。字节。数据行不能跨页存储(文本和图像例外)。页内数据数据行不能跨页存储(文本和图像例外)。页内数据行的多少依赖于表的结构和要存储的数据。行的多少依赖于表的结构和要存储的数据。如果一个表的所有列都是如果一个表的所有列都是定长定长,那么该表在每一页上,那么该表在每一页上存储相同数目的行。存储相同数目的行。如果一个表里有如果一个表里有变长列变长列,那么该表总是在每一页上存,那么该表总是在每一页上存储尽可能多的行。储尽可能多的行。4.1.2 数据行(记录)结构数据行(记录)结构1 1、定长记录、定长记录在在定定长长记记录录里里,每每个个字字段段都都有有固固定定的的长长度度,而而且且字字段段数数也也是是固固定定的的。这这种种记记录录的的字字段段能能够够连连续续存存储储,因因此此在在给给定定记记录录地地址址的的情情况况下下,借借助助系系统统目目录录里里有有关关字字段段的的长长度度信信息息就就能能计计算算出出某某个个特殊字段的地址。特殊字段的地址。2 2、变长记录、变长记录对对于于变变长长记记录录来来说说,一一种种可可能能的的记记录录组组织织方方式式就就是是像像定定长长记记录录一一样样连连续续地地存存放放字字段段,字字段段之之间间通通过过分分割割符符隔隔开开。这这种种组组织织方方式需要扫描记录才能定位需要访问的字段。式需要扫描记录才能定位需要访问的字段。另另一一种种方方法法是是在在记记录录开开始始处处预预留留一一些些空空间间作作为为存存放放一一个个整整数数偏偏移移量量数数组组的的空空间间,数数组组中中的的第第I I个个整整数数表表示示记记录录的的第第I I个个字字段段的的其其始始地地址址,当当然然这这个个地地址址是是相相对对于于记记录录的的起起始始地地址址的的。另另外外在在数数组组中中也也存存储储记记录录尾尾部部的的偏偏移移量量,这这个个偏偏移移量量用用来来识识别别最最后后一一个字段的结束位置。个字段的结束位置。1 1、SQL ServerSQL Server定长记录的存储定长记录的存储首先来看最简单的情况,记录中所有字段都是定长的。首先来看最简单的情况,记录中所有字段都是定长的。CREATE TABLE FixedCREATE TABLE 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,它的值是,它的值是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 TABLE 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系统表中系统表中;而其各个字段则会被插入到而其各个字段则会被插入到syscolumnssyscolumns系统表中。系统表中。2 2、SQL ServerSQL Server变长记录的存储变长记录的存储往往VariableVariable表中插入一个记录数据时,例如:表中插入一个记录数据时,例如:INSERT INTO Variable INSERT INTO Variable VALUES(VALUES(xyzxyz,ABCDeABCDe,NULL,NULL,123123,999),999)为了找到变长字段,首先要确定记录中列偏移数组的位置。在表示总字段数的为了找到变长字段,首先要确定记录中列偏移数组的位置。在表示总字段数的2 2个个字节(其值是字节(其值是05000500)和表示位图的)和表示位图的1 1字节(其值为字节(其值为0404)之后就是变长字段数的两个)之后就是变长字段数的两个字节,在本例中其值是字节,在本例中其值是03000300,换算成十进制是,换算成十进制是3 3,说明该记录有,说明该记录有3 3个变长字段存在。个变长字段存在。紧跟其后的字节就是变长字段偏移数组。该例变长字段偏移数组用三个紧跟其后的字节就是变长字段偏移数组。该例变长字段偏移数组用三个2 2字节来表字节来表示示3 3个变长字段在记录中的结束位置。个变长字段在记录中的结束位置。19001900经过字节交换是经过字节交换是0 x00190 x0019,所以第一个变,所以第一个变长字段结束于长字段结束于2525字节处。接下来也是字节处。接下来也是0 x00190 x0019,所以第二个变长字段实际长度为,所以第二个变长字段实际长度为0 0,表明没有任何东西存储在变长数据区域。表明没有任何东西存储在变长数据区域。1c001c00经过字节交换是经过字节交换是0 x001c0 x001c,所以第三,所以第三个变长字段结束于个变长字段结束于2828字节处,而且整个记录也结束于字节处,而且整个记录也结束于2828字节处,换句话说,目前字节处,换句话说,目前整个记录的实际长度是整个记录的实际长度是2828个字节长。个字节长。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的临时表的临时表临时表分两种:临时表分两种:本地临时表本地临时表:表名用:表名用#开头。只能由创建它的用户使用,开头。只能由创建它的用户使用,在该用户连接断开时,它被自动删除。在该用户连接断开时,它被自动删除。全局临时表全局临时表:表名用:表名用#开头。当前所有连接用户都可以开头。当前所有连接用户都可以使用,它在最后一个会话结束时被自动删除。使用,它在最后一个会话结束时被自动删除。4.2.2 SQL Server的系统表的系统表 系系统统表表中中的的数数据据组组成成了了SQL SQL ServerServer系系统统利利用用的的数数据据字字典典,系系统统表表记记录录所所有有服服务务器器活活动动的的信信息息,是是维维护护所所有有存存储储在在其其中中的的所所有有对对象象、数数据据类类型型、约约束束、配配置置选选项项等等可可利利用用资源的相关信息。资源的相关信息。一些系统表只存在于一些系统表只存在于mastermaster数据库,它们包含系统级信数据库,它们包含系统级信息。息。而一些系统表则存在于每一个数据库(包括而一些系统表则存在于每一个数据库(包括mastermaster数据数据库),它们包含属于这个特定数据库的对象和资源的相库),它们包含属于这个特定数据库的对象和资源的相关信息。关信息。注意:注意:不允许使用不允许使用SQLSQL语句直接修改系统表中的内容;语句直接修改系统表中的内容;如果需要系统表信息,可以通过系统的存储过程和系统如果需要系统表信息,可以通过系统的存储过程和系统提供的函数进行。提供的函数进行。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数数据据类类型型存存储储的的每每个个值值占占用用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范范围围内内的的所所有有整整数数。以以smallintsmallint数数据据类类型型存存储储的的每每个个值值占占用用2 2个个字字节节,共共1616位位,其其中中1515位位用用于于存存储储数数字字,1 1位位用用于表示正负的区别。于表示正负的区别。TinyintTinyint。可可以以存存储储0 0到到255255范范围围内内的的所所有有整整数数。以以tinyinttinyint数数据据类类型型存存储储的每个值占用的每个值占用1 1个字节个字节。DecimalDecimal和和NumericNumeric。在在SQL SQL ServerServer中中,decimaldecimal和和numericnumeric型型数数据据的的最最高高精精度度的的可可以以达达到到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+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-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.3 4.3.3 字符型数据字符型数据 CharChar。利利用用CharChar数数据据类类型型存存储储数数据据时时,每每个个字字符符占占用用一一个个字字节节的的存存储储空空间间。CharChar数数据据类类型型使使用用固固定定长长度度来来存存储储字字符符,最最长长可可以以容容纳纳80008000个个字字符符。利利用用CharChar数数据据类类型型来来定定义义表表列列或或者者定定义义变变量量时时,应应该该给给定定数数据据的的最最大大长长度度。如如果果实实际际数数据据的的字字符符长长度度短短于于给给定定的的最最大大长长度度,则则多多余余的的字字节节会会用用空空格格填填充充。如如果果实实际际数数据据的的字字符符长长度度超超过过了了给给定定的的最最大大长长度度,则则超超过过的的字字符符将将会会被被截截断断。在在使使用用字字符符型型常常量量为为字字符符数数据据类类型型赋赋值值时时,必必须须使使用用单单引引号号()将将字字符型常量括起来。符型常量括起来。VarcharVarchar。VarcharVarchar数据类型的使用方式与数据类型的使用方式与CharChar数据类型类似。数据类型类似。SQL Server SQL Server 利用利用VarcharVarchar数据类型来存储最长可以达到数据类型来存储最长可以达到80008000字符字符的变长字符。与的变长字符。与Char Char 数据类型不同,数据类型不同,VarcharVarchar数据类型的存储空数据类型的存储空间随存储在表列中的每一个数据的字符数的不同而间随存储在表列中的每一个数据的字符数的不同而变化变化。TextText。当要存储的字符型数据非常庞大以至于。当要存储的字符型数据非常庞大以至于80008000字节完全不字节完全不够用时,够用时,CharChar和和VarcharVarchar数据类型都失去了作用。这时应该选择数据类型都失去了作用。这时应该选择TextText数据类型。数据类型。TextText数据类型专门用于存储数据类型专门用于存储数量庞大的变长字符数量庞大的变长字符数据。最大长度可以达到数据。最大长度可以达到2 23131-1-1个字符,约个字符,约2GB2GB。4.3.4 4.3.4 日期日期/时间数据类型时间数据类型 DatetimeDatetime。DatetimeDatetime数数据据类类型型范范围围从从17531753年年1 1月月1 1日日到到 99999999年年 1212月月 3131日日,可可 以以 精精 确确 到到 千千 分分 之之 一一 秒秒。DatetimeDatetime数据类型的数据占用数据类型的数据占用8 8个字节个字节的存储空间。的存储空间。SmalldatetimeSmalldatetime。SmalldatetimeSmalldatetime数据范围从数据范围从19001900年年1 1月月1 1日到日到20792079年年6 6月月6 6日,可以精确到分。日,可以精确到分。SmalldatetimeSmalldatetime数据类型占数据类型占4 4个字节个字节的存储空间。的存储空间。4.3.5 二进制数据类型二进制数据类型 所所谓谓二二进进制制数数据据是是一一些些用用十十六六进进制制来来表表示示的的数数据据。例例如如,十进制数据十进制数据245245表示成十六进制数据就应该是表示成十六进制数据就应该是F5F5。(1 1)binarybinary。具具有有固固定定的的长长度度,最最大大长长度度可可以以达达到到8K8K字字节。节。(2 2)varbinaryvarbinary。具具有有不不固固定定的的长长度度,其其最最大大长长度度也也不不得超过得超过8K8K字节。字节。(3)Image。该该数数据据类类型型可可用用于于存存储储字字节节数数超超过过8K字字节节的的数数据据,比比如如Microsoft Word文文档档、Microsoft Excel图图表以及图像数据(包括表以及图像数据(包括.GIF、.BMP、.JPEG文件)等。文件)等。4.3.5 双字节数据类型双字节数据类型(1 1)Nchar(n)Nchar(n)。Nchar(n)Nchar(n)是是固固定定长长度度的的双双字字节节数数据据类类型型,括括号号里里的的n n用用来来定定义义数数据据的的最最大大长长度度。n n的的取取值值范范围是围是1400014000。(2 2)Nvarchar(n)Nvarchar(n)。Nvarchar(n)Nvarchar(n)数数据据类类型型存存储储可可变变长长度度的的双双字字节节数数据据类类型型,括括号号里里的的n n用用来来定定义义数数据据的的最最大大长度。长度。n n的取值为的取值为0400004000。(3)Ntext(n)。Ntext数数据据类类型型存存储储的的是是可可变变长长度度的的双双字字节节字字符符,Ntext数数据据类类型型突突破破了了前前2种种双双字字节节数数据据类类型型不不能能超超过过4000字字符符的的规规定定,最最多多可可以以存存储储多多达达230-1个双字节字符。个双字节字符。4.4 数据表的创建和管理数据表的创建和管理 4.4.1 数据表结构的创建数据表结构的创建 4.4.2 数据表结构的管理数据表结构的管理 4.4.1 数据表结构的创建数据表结构的创建 在在SQL Server 中,每个数据库中最多可以创建中,每个数据库中最多可以创建20 亿个表,用户创建数据库表时,最多可以定义亿个表,用户创建数据库表时,最多可以定义1024列,也就是可以定义列,也就是可以定义1024个字段。个字段。SQL Server 提供了两种方法创建数据库表:提供了两种方法创建数据库表:第一种方法第一种方法是利用是利用SSMS创建表;创建表;另一种方法另一种方法是利用是利用Transact-SQL语句中的语句中的create命令创建表。命令创建表。1.利用利用create命令创建表命令创建表其语法形式如下:其语法形式如下:CREATE TABLE(列级完整性约束条件列级完整性约束条件,列级完整性约束条件列级完整性约束条件,)1.利用利用create命令创建表命令创建表参数说明:参数说明:(1 1)是是所所要要定定义义的的基基本本表表的的名名字字。一一个个表表它它可可以以由由一一个个或或多个属性组成。多个属性组成。(2 2)一般取有实际意义的名字。一般取有实际意义的名字。(3 3)可以是前面介绍的数据类型。可以是前面介绍的数据类型。(4 4)在)在SQL Server SQL Server 中有下面几种中有下面几种完整性约束条件完整性约束条件:空值约束(空值约束(NULL or NOT NULL);主键约束();主键约束(primary key constraint);唯一性约束();唯一性约束(unique constraint);检查);检查约束(约束(check constraint);缺省约束();缺省约束(default constraint););外部键约束(外部键约束(foreign key constraint);规则();规则(rule);缺省);缺省值(值(default)。)。2关于创建表时运用约束的说明关于创建表时运用约束的说明(1 1)空值约束()空值约束(NULL or NOT NULLNULL or NOT NULL)空空值值NULLNULL约约束束决决定定属属性性值值是是否否允允许许为为空空值值(NULLNULL)。NULLNULL表表示示没没有有输输入入任任何何内内容容,它它不不是是零零和和空空白白,不不允允许为空值则用许为空值则用NOT NULLNOT NULL表示。表示。例如:设置属性例如:设置属性teacherteacher允许为空值。允许为空值。CREATE TABLE t(teacher char(8)NULL)2关于创建表时运用约束的说明关于创建表时运用约束的说明(2 2)主键约束()主键约束(primary key constraintprimary key constraint)主主健健约约束束要要求求主主健健属属性性取取值值必必须须惟惟一一,一一个个表表只只能能包包含含一一个个主主健健约约束束。如如果果没没有有在在主主健健约约束束中中指指定定CLUSTEREDCLUSTERED或或NONCLUSTEREDNONCLUSTERED,并并且且没没有有为为UNIQUEUNIQUE约约束束指指定定聚聚集集索索引,则将对该主健约束用引,则将对该主健约束用CLUSTEREDCLUSTERED。主键约束主键约束SQLSQL的语法形式如下:的语法形式如下:CONSTRAINT 约束名约束名 PRIMARY KEY CLUSTERED|NONCLUSTERED(列名(列名,n)例如:在执行创建产品信息表的操作时,指定产品编号为主键值。例如:在执行创建产品信息表的操作时,指定产品编号为主键值。CREATE TABLE products(id char(10)NOT NULL,name char(20)NOT NULL,price money,quantity smallint NULL,CONSTRAINT pk_products PRIMARY KEY CLUSTERED(id)此例的主健名称是此例的主健名称是pk_products,在,在products表中关于表中关于id建立了一个索建立了一个索引排序。引排序。2关于创建表时运用约束的说明关于创建表时运用约束的说明(3 3)唯一性约束()唯一性约束(unique constraintunique constraint)唯一性约束用于指定一个或者多个列的组合的值具有唯一性,以防唯一性约束用于指定一个或者多个列的组合的值具有唯一性,以防止在列中输入重复的值。止在列中输入重复的值。创建唯一性约束创建唯一性约束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)2关于创建表时运用约束的说明关于创建表时运用约束的说明(4 4)检查约束()检查约束(check constraintcheck constraint)使用检查约束时,应该注意以下几点:使用检查约束时,应该注意以下几点:一一个个列列级级检检查查约约束束只只能能与与限限制制的的字字段段有有关关;一一个个表表级级检检查查约约束束只能与限制的表中字段有关。只能与限制的表中字段有关。一个表中可以定义多个检查约束。一个表中可以定义多个检查约束。在多个字段上定义检查约束,则必须将检查约束定义为表级约束。在多个字段上定义检查约束,则必须将检查约束定义为表级约束。检查约束中不能包含子查询。检查约束中不能包含子查询。创建检查约束创建检查约束SQLSQL语法格式为:语法格式为:CONSTRAINT constraint_nameCHECK (logical_expression)例例如如:创创建建一一个个职职工工信信息息表表,其其中中输输入入性性别别字字段段值值时时,只只能能接接受受“F F”或或者者“M M”,并并且且为为phonenumphonenum字字段段创创建建检检查查约约束束,限限制只能输入类似之类的数据,而不能随意输入其他数据。制只能输入类似之类的数据,而不能随意输入其他数据。create table employee(Id char(8),ename char(4)check(ename LIKE A-C,a-cA-Z,a-zA-ZA-Z),sex char(2)DEFAULT(F),phonenum char(15),constraint chk_sex check(sex in(F,M),Constraint chk_phonenum check(phonenum like(010)8,90-90-90-90-90-90-90-9)2关于创建表时运用约束的说明关于创建表时运用约束的说明(5 5)外部键约束)外部键约束外外部部键键约约束束用用于于强强制制参参照照完完整整性性,提提供供单单个个字字段段或或者者多多个个字字段段的的参照完整性。当使用外部键约束时,应该考虑以下几个因素:参照完整性。当使用外部键约束时,应该考虑以下几个因素:外部键约束提供了字段参照完整性。外部键约束提供了字段参照完整性。外外部部键键从从句句中中的的字字段段数数目目和和每每个个字字段段指指定定的的数数据据类类型型必必须须和和REFERENCESREFERENCES从句中的字段相匹配。从句中的字段相匹配。外部键约束不能自动创建索引,需要用户手动创建。外部键约束不能自动创建索引,需要用户手动创建。一个表中最多可以有一个表中最多可以有3131个外部键约束。个外部键约束。在临时表中,不能使用外部键约束。在临时表中,不能使用外部键约束。主键和外部键的数据类型必须严格匹配。主键和外部键的数据类型必须严格匹配。外键约束外键约束SQLSQL的语法形式如下:的语法形式如下:CONSTRAINT CONSTRAINT 约束名约束名 FOREIGN KEY FOREIGN KEY(外键列名)(外键列名)REFERENCES REFERENCES 参照表(参照列名)参照表(参照列名)外键约束主要用来维护两个表之间的一致性关系。外键约束主要用来维护两个表之间的一致性关系。外键的建立主要是通过将一个表的主键所在列包含在另一外键的建立主要是通过将一个表的主键所在列包含在另一个表中,这些列就是另一个表的外键。个表中,这些列就是另一个表的外键。外键的作用外键的作用不只是对输入不只是对输入自身的数据进行限制,同自身的数据进行限制,同时也限制了对主键所在表时也限制了对主键所在表的数据进行修改。的数据进行修改。用户无法对主键里的数据用户无法对主键里的数据进行修改和删除,除非事进行修改和删除,除非事先删除或修改外键引用的先删除或修改外键引用的数据。数据。例例如如:学学生生表表S S(SNOSNO,SNAMESNAME,)中中的的SNOSNO是是S S表表的的主主健健,课课程程表表C C(CNOCNO,CNAMECNAME,)中中的的CNOCNO是是C C表表的的主主健健,而而学学习习表表SCSC(SNOSNO,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 KEY(SNO)REFERENCES Student(Sno),FOREIGN KEY(CNO)REFERENCES Course(Cno)3数据表结构创建实例数据表结构创建实例【例例4-14-1】创创建建数数据据库库“教教学学管管理理”的的数数据据表表学学生生基基本本资资料料表表STUDENTSTUDENT,数数据据表表结结构构如如表表0-30-3、表表的的完完整整性性约约束束如如表表0-80-8、表、表0-90-9所示。所示。方法一:使用方法一:使用SSMSSSMS创建创建第一步设置第一步设置STUDENTSTUDENT数据表的结构数据表的结构,步骤如下:,步骤如下:在树形目录中找到要建表的数据库。在树形目录中找到要建表的数据库。展展开开该该数数据据库库,在在“表表”上上单单击击鼠鼠标标右右键键,在在弹弹出出的的快快捷捷菜菜单单中中选选择择“新新建建表表”命命令令,出出现现创创建建数数据据表表结结构构的窗口。的窗口。3数据表结构创建实例数据表结构创建实例图 利用表设计器创建表结构 3数据表结构创建实例数据表结构创建实例 表设计器的上半部分有一个表格,在这个表格中输入表设计器的上半部分有一个表格,在这个表格中输入列的属性,表格的每一行对应一列。对每一列都需要进列的属性,表格的每一行对应一列。对每一列都需要进行设置,其中前三项是必须在建表时给出的。行设置,其中前三项是必须在建表时给出的。完完成成后后,单单击击工工具具栏栏上上的的【保保存存】按按钮钮。在在出出现现的的选选择名称对话框中输入表名:择名称对话框中输入表名:STUDENTSTUDENT。单击单击【确定确定】按钮退出。按钮退出。3数据表结构创建实例数据表结构创建实例第二步设置第二步设置STUDENTSTUDENT表完整性约束表完整性约束,步骤如下:,步骤如下:展展开开SSMSSSMS的的数数据据库库“教教学学管管理理”,单单击击“表表”节节点点,选选定定数数据据表表STUDENTSTUDENT,单单击击右右键键,在在快快捷捷菜菜单单上上,单单击击“设计表设计表”,出现设计表结构窗口。,出现设计表结构窗口。设设置置主主键键约约束束(PRIMARY PRIMARY KEYKEY),光光标标移移到到需需要要设设置置主主键键的的字字段段snosno,单单击击工工具具栏栏上上的的主主键键按按钮钮,snosno列名左侧出现列名左侧出现“钥匙钥匙”图标。图标。如如果果要要设设置置多多属属性性作作为为主主键键,可可以以通通过过按按住住键键,用用鼠鼠标标左左键键依依次次单单击击要要选选定定的的列列,选选定定多多列列后后,单单击击工工具具栏栏上上的的主主键键按按钮钮。取取消消主主键键设设置置的的方方法法是是,选定主键字段,单击主键按钮即可。选定主键字段,单击主键按钮即可。设置主键后,系统自动建立了一个索引。设置主键后,系统自动建立了一个索引。3数据表结构创建实例数据表结构创建实例 在在表表设设计计器器上上右右击击,出出现现快快捷捷菜菜单单,在在上上面面单单击击“属属性性”,出出现现属属性性对对话话框框,在在“表表”选选项项中中,可可以以输输入入表表的的名名称称、所所有有者者、表表文文件件组等信息。组等信息。在在属属性性对对话话框框中中选选择择“索索引引/键键”选选项项,系系统统设设置置表表student.sno属属性性为为主主键键,因因此此自自动动在在表表中中建建立立一一个个根根据据sno的的值值的的大大小小升升序序排排列列的的索索引引。由由于于主主键键要要求求属属性性取取值值惟惟一一,所所以以复复选选框框“创创建建UNIQUE”被选上。被选上。设设置置检检查查约约束束(CHECKCHECK),STUDENTSTUDENT表表定定义义了了三三个个CHECKCHECK约约束束,第第一一个个约约束束是是学学号号snosno,只只能能有有7 7个个字字符符构构成成,其其中中第第一一个个必必须须是是S S,后后面面全全部部是是数数字字,逻逻辑辑表表达达式式为为“(sno sno LIKE LIKE S0-90-90-90-S0-90-90-90-90-90-990-90-9)”。单击单击“CHECKCHECK约束约束”选项卡,在选项卡,在“CHECKCHECK约束约束”对话框中新建约束。对话框中新建约束。3数据表结构创建实例数据表结构创建实例建建立立学学号号的的约约束束:单单击击【新新建建】,系系统统自自动动给给定定一一个个约约束束名名,可可在在“约约束束名名”处处改改名名为为“CK_SNOCK_SNO”,然然后后在在约约束束表表达达式式文文本本框框中中输输入入(sno sno LIKE LIKE S0-90-S0-90-90-90-90-90-990-90-90-90-9)。)。建立建立身份证约束身份证约束:单击:单击【新建新建】,系统自动给定一个约,系统自动给定

    注意事项

    本文(表的存储原理及完整性创建.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开