资源描述
Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,第7章 规则和默认值,单击此处编辑母版标题样式,第22讲,第,7,章 规则和默认值,主讲人:段利文,第22讲,复习,索引的作用,索引的类型,创建索引的方法,系统自动创建索引,用户创建索引,删除索引的方法,drop index,索引名,alter table,表名,drop constraint,约束名,提高检索数据的速度,聚集和非聚集索引,惟一和非惟一索引,单和复合索引,添加主键约束时,添加惟一性约束时,create index,索引名,on,表名(列名),引:,请思考:,在创建数据表时,是如何实现数据完整性的?,这些约束是如何存储的?,主键(,PRIMARY KEY,),约束,惟一(,UNIQUE,),约束,外键(,FOREIGN KEY,),约束,检查(,CHECK,),约束,默认值(,DEFAULT,),约束,空值(,NULL,),约束,实现实体完整性,实现参照完整性,实现域完整性,通过创建表约束来实现的。那么,有哪些约束呢?,与表的定义存储在一起。若删除表,则约束也被删除。,再思考,:,能否使约束,(,如检查约束、默认值约束,),不随表的删除而删除,?,能否将相同的约束应用于多个表的多列上,?,第,7,章 规则和默认值,教学内容,基础知识:,规则对象,默认值对象,实现数据完整性的主要方法,第,7,章 规则和默认值,学习目标,认知目标:,了解规则对象、默认值对象的定义,了解规则对象和,CHECK,约束的区别,了解默认值对象和默认值约束的区别,能力目标,(,重点、难点),:,掌握创建和绑定规则对象的方法,掌握创建和绑定默认值对象的方法,一、规则对象,1.,规则的概述,规则的含义,规则是绑定到列上的数据库对象,,用来指定列可以接受哪些数据值,。,规则是,实现域完整性,的方法之一。,规则与check约束的区别,check,约束是用,create/alter table,语句在建表或修改表时定义的,嵌入到被定义的表结构中;而规则是用,create rule,语句创建的,是作为,单独的数据库对象,来使用的。,在1列上只能使用1个规则,但可以使用多个,check,约束,1个规则可以应用于多个列,而,check,约束只能应用于它所定义的列上。,一、规则对象,2.,创建规则,语法格式:,create rule,规则名,as,条件表达式,书写条件表达式的注意事项:,不能引用列名或其它数据库对象名。,条件表达式中包含一个以开头的局部变量,该变量代表在修改该列的记录时用户输入的数值。,用于指定列值的格式或取值范围,一、规则对象,2.,创建规则,实例1:在xscj库中定义1个规则,限制联系电话的格式为“(区号)电话号码”,其中区号为3位,电话号码至少为6位。,use,xscj,go,create rule,ro_电话格式,as,联系电话 like,(_ _ _)_ _ _ _ _ _%,一、规则对象,2.,创建规则,课堂练习1:在xscj库中,定义1个名为“ro_正数”的规则,限制使用了该规则的列的值必须大于0。,use,xscj,go,create rule,ro_正数,as,zhensh,=0,一、规则对象,3.,绑定规则,规则创建好后,必须,绑定,到列上才能生效。,用系统存储过程实现绑定:,exec,sp_bindrule,规则名,表名.列名,说明:,如果列上已经绑定了规则,当再次向它们绑定规则时,旧规则将被新规则覆盖。,绑定规则后,当有不符合规则的数据输入时,系统会给出错误信息,拒绝接受该值。,规则创建好后,必须绑定到列上才能生效。,默认值就是当用户向表中添加数据时,没有明确地给出,而由SQL Server自动指派的值。,as 常量表达式,绑定规则后,当有不符合规则的数据输入时,系统会给出错误信息,拒绝接受该值。,exec sp_unbindrule kc.,实例8:将 默认值对象“dfo_备注”绑定到xsqk表的“备注”列上。,create rule ro_学时 as xueshi=20,了解规则对象和CHECK约束的区别,二、默认值对象4.,再思考:能否使约束(如检查约束、默认值约束)不随表的删除而删除?能否将相同的约束应用于多个表的多列上?,默认值约束与默认值对象的区别,能力目标(重点、难点):,在1列上只能使用1个规则,但可以使用多个check约束,检查约束(check),默认值约束(default),as 条件表达式,一、规则对象,3.,绑定规则,实例2:将名为“ro_电话格式”的规则绑定到xsqk表的“联系电话”列上。,实例3:将名为“,ro_正数,”的规则分别绑定到xsqk表的“总学分”列、xs_kc表的“成绩”和“学分”列、kc表的“开课学期”和“学分”列上。,exec,sp_bindrule,ro_正数,xsqk.总学分,exec,sp_bindrule,ro_正数,xs_kc.成绩,exec,sp_bindrule,ro_正数,xs_kc.学分,exec,sp_bindrule,ro_正数,kc.开课学期,exec,sp_bindrule,ro_正数,kc.学分,exec,sp_bindrule,ro_电话格式,xsqk.联系电话,一、规则对象,3.,绑定规则,课堂练习2:在xscj库中,创建一个名为“,ro_学时,”的规则,以限制学时数至少在20以上,并将该规则绑定到kc表的“学时”列上。,use,xscj,go,create rule,ro_学时,as,xueshi,=20,go,sp_bindrule,ro_学时,kc.学时,一、规则对象,4.,解除绑定的规则,用系统存储过程解除绑定,exec,sp_unbindrule,表名.列名,实例5:解除绑定在xsqk、xs_kc、kc表列上的规则。,exec,sp_unbindrule,xsqk.联系电话,exec,sp_unbindrule,xsqk.总学分,exec,sp_unbindrule,xs_kc.成绩,exec,sp_unbindrule,xs_kc.学分,exec,sp_unbindrule,kc.开课学期,exec,sp_unbindrule,kc.学分,exec,sp_unbindrule,kc.学时,一、规则对象,5.,删除规则,语法格式:,drop rule,规则名,n,说明:,删除一个规则前,必须先将规则从它所绑定的列上解除,否则,,会显示错误信息,。,实例6:删除xscj库中的规则。,drop rule,ro_电话格式,ro_正数,ro_学时,二、默认值对象,1.,概述,定义,默认值就是当用户向表中添加数据时,没有明确地给出,而由SQL Server自动指派的值。,默认值可以定义为数据库对象,使用时需将其绑定到特定的列上。,默认值约束与默认值对象的区别,默认值约束是用,create/alter table,语句创建或定义表时,使用,default,子句为表中的列提供默认值;默认值对象是用,create default,语句来创建的,是作为,单独的数据库对象,来使用的。,在1列上只能使用1个默认值约束或默认值对象。,1个默认值对象可以应用于多个列,而默认值约束只能应用于它所定义的列上。,了解规则对象和CHECK约束的区别,第7章 规则和默认值学习目标,on 表名(列名),了解规则对象和CHECK约束的区别,能力目标(重点、难点):,默认值可以定义为数据库对象,使用时需将其绑定到特定的列上。,exec sp_unbindrule xsqk.,exec sp_unbindrule kc.,exec sp_unbindrule 表名.,再思考:能否使约束(如检查约束、默认值约束)不随表的删除而删除?能否将相同的约束应用于多个表的多列上?,再思考:能否使约束(如检查约束、默认值约束)不随表的删除而删除?能否将相同的约束应用于多个表的多列上?,exec sp_unbindrule 表名.,exec sp_bindrule ro_正数,xs_kc.,实例8:将 默认值对象“dfo_备注”绑定到xsqk表的“备注”列上。,检查(CHECK)约束,as 常量表达式,1个规则可以应用于多个列,而check约束只能应用于它所定义的列上。,二、默认值对象,2.,创建默认值对象,语法格式:,create default,默认值对象名,as,常量表达式,说明:,字符和日期型数据:必须用单引号,括起来,二进制数据:必须以,0 x,作前导符,货币型数据:以美元符号,$,开头,整数和浮点数:不需要任何定界符,可以是常量、内置函数或表达式,用系统存储过程实现绑定:,在1列上只能使用1个规则,但可以使用多个check约束,否则,会显示错误信息。,删除一个默认值之前,应先将默认值从它所绑定的列上解除。,再思考:能否使约束(如检查约束、默认值约束)不随表的删除而删除?能否将相同的约束应用于多个表的多列上?,再思考:能否使约束(如检查约束、默认值约束)不随表的删除而删除?能否将相同的约束应用于多个表的多列上?,在1列上只能使用1个规则,但可以使用多个check约束,主键约束(primary key),exec sp_bindrule 规则名,表名.,默认值可以定义为数据库对象,使用时需将其绑定到特定的列上。,书写条件表达式的注意事项:,实现数据完整性的主要方法,as 常量表达式,二、默认值对象,2.,创建默认值对象,实例7,:,在xscj库中定义1个名为“,dfo_备注,”的默认值对象,限制使用了该默认值对象的列的值为“统招生”。,use,xscj,create default,dfo_备注,as,统招生,二、默认值对象,3.,绑定和解除默认值对象,绑定默认值对象,exec,sp_bindefault,默认值名,表名.列名,解除绑定,exec,sp_unbindefault,表名.列名,实例8:,将,默认值对象“,dfo_备注,”绑定到xsqk表的“备注”列上。,sp_bindefault,dfo_备注,xsqk.备注,二、默认值对象,4.,删除默认值对象,格式:,drop default,默认值名,,,n,说明:,删除一个默认值之前,应先将默认值从它所绑定的列上解除。否则,会显示错误信息。,三、,实现数据完整性的主要方法,约束,主键约束(primary key),惟一约束(unique),检查约束(check),默认值约束(default),非空值约束(not null),外键约束(foreign key),标识列,索引,规则对象,默认值对象,触发器,本课小结,规则对象,创建规则:,create rule,规则名,as,条件表达式,绑定规则:,exec,sp_bindrule,规则名,表名.列名,解除规则:,exec,sp_unbindrule,表名.列名,删除规则:,drop rule,规则名,n,默认值对象,实现数据完整性的主要方法,课余作业,课外练习(补充):,什么是规则,?它与,check,约束有什么区别?,为表中提供默认值的方法有哪两种?,编写,T-SQL,语句,要求:,在,xscj,库的,xsqk,表中增加一个“,email”,列,类型为,varchar(30),;,定义一个名为“,ro_email,”,的规则,限制字符串中必须包含“,”,字符。,将该规则绑定到,xsqk,表的“,email”,列上。,课余作业,预习:,第8章。,请思考下列问题:,T-SQL,标识符的命名必须遵循哪些规则?,什么叫常量?如何书写常量?,如何声明变量?如何给变量赋值?,全局变量有哪些特点?,T-,SQL,有哪些类型的函数?,T-SQL,有哪些类型的运算符?其优先级如何?,
展开阅读全文