第7章规则和默认值对象.ppt
第7章 规则和默认值,第22讲,复习,索引的作用索引的类型创建索引的方法系统自动创建索引用户创建索引删除索引的方法drop index 索引名alter table 表名 drop constraint 约束名,提高检索数据的速度,聚集和非聚集索引惟一和非惟一索引单和复合索引,添加主键约束时添加惟一性约束时,create index 索引名on 表名(列名),引:,请思考:在创建数据表时,是如何实现数据完整性的?实例1:(教材P160例6-18)。这些约束是如何存储的?,主键(PRIMARY KEY)约束惟一(UNIQUE)约束外键(FOREIGN KEY)约束检查(CHECK)约束默认值(DEFAULT)约束空值(NULL)约束,实现参照完整性,通过创建表约束来实现的。那么,有哪些约束呢?,与表定义存储在一起。若删除表,则约束也被删除。再思考:能否使约束(如检查约束、默认值约束)不随表的删除而删除?能否将相同的约束应用于多个表的多列上?,第7章 规则和默认值教学内容,基础知识:规则对象默认值对象实现数据完整性的主要方法,第7章 规则和默认值学习目标,认知目标:了解规则对象、默认值对象的定义了解规则对象和CHECK约束的区别了解默认值对象和默认值约束的区别能力目标(重点、难点):掌握创建和绑定规则对象的方法掌握创建和绑定默认值对象的方法,一、规则对象1.规则的概述,规则的含义规则是绑定到列上的数据库对象,用来指定列可以接受哪些数据值。规则是实现域完整性的方法之一。规则与check约束的区别check约束是用create table语句在建表时指定的,而规则是要用create rule语句创建,且可作为单独的数据库对象来使用。在1列上只能使用1个规则,但可以使用多个check约束1个规则可以应用于多个列,而check约束只能应用于它所定义的列。,一、规则对象2.创建规则,语法格式:create rule 规则名 as 条件表达式书写条件表达式的注意事项:不能引用列名或其它数据库对象名。条件表达式中包含一个以开头的局部变量,该变量代表在修改该列的记录时用户输入的数值。,用于指定列值的格式或取值范围,一、规则对象2.创建规则,实例2:在xscj库中定义1个规则,限制联系电话的格式为“(区号)电话号码”,其中区号为4位,电话号码至少为6位。,use xscjgocreate rule ro_电话格式as 联系电话 like(_ _ _ _)_ _ _ _ _ _%,一、规则对象2.创建规则,课堂练习1:在xscj库中,定义1个名为“ro_正数”的规则,限制使用了该规则的列的值必须大于0。,use xscjgocreate rule ro_正数 as zhensh=0 goexec sp_helptext ro_正数exec sp_help ro_正数,查看规则的定义,查看规则的基本信息,一、规则对象3.绑定规则,规则创建好后,必须绑定到列上才能生效。用系统存储过程实现绑定:exec sp_bindrule 规则名,表名.列名说明:如果列上已经绑定了规则,当再次向它们绑定规则时,旧规则将被新规则覆盖。绑定规则后,当有不符合规则的数据输入时,系统会给出错误信息,拒绝接受该值。,一、规则对象3.绑定规则,实例3:将名为“ro_电话格式”的规则绑定到xsqk表的“联系电话”列上。实例4:将名为“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 xscjgocreate rule ro_学时 as xueshi=20gosp_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 table语句创建表时,使用default子句为表中的列提供默认值。默认值对象是用create default语句来创建的,使用时须将它绑定到列上。,二、默认值对象2.创建默认值对象,语法格式:create default 默认值对象名 as 常量表达式说明:字符和日期型数据:必须用单引号括起来二进制数据:必须以0 x作前导符货币型数据:以美元符号$开头整数和浮点数:不需要任何定界符 实例7:教材P156例6-14。,可以是常量、内置函数或表达式,二、默认值对象2.创建默认值对象,课堂练习:在xscj库中定义1个名为“dfo_备注”的默认值对象,限制使用了该默认值对象的列的值为“统招生”。use xscjcreate default dfo_备注 as 统招生,二、默认值对象3.绑定和解除默认值对象,绑定默认值对象 exec sp_bindefault 默认值名,表名.列名解除绑定 exec sp_unbindefault 表名.列名实例8:将 默认值对象“dfo_备注”绑定到xsqk表的“备注”列上。sp_bindefault dfo_备注,xsqk.备注,二、默认值对象4.删除默认值对象,格式:drop default 默认值名,n 说明:删除一个默认值之前,应先将默认值从它所绑定的列上解除。否则,会显示错误信息。实例9:自学教材P159例6-17。,三、实现数据完整性的主要方法,约束主键约束(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有哪些类型的运算符?其优先级如何?,