Copyright©2007创智新程管理表中的数据Copyright©2007-2009创智新程Copyright©2007创智新程本课教学内容创建规则创建缺省管理表中的数据插入数据更新数据删除数据将表中的数据存储到新表清空表中数据Copyright©2007创智新程创建规则创建规则任务解题步骤课堂练习Copyright©2007创智新程任务一FOX公司需要对市场进行调查,要构造一个样本客户表,限定样本空间的大小不能超过10000。表SAMPLE_CUSTOMER已经建立了,要求不改变表结构的前提下,可以实现自动对样本空间的限制。表的结构如下:Copyright©2007创智新程任务CREATETABLESample_Customer(CustomerIDINTPRIMARYKEY,CustomerNameCHAR(50),CustomerAddressCHAR(50),CustomerCreditLimitMONEY)Copyright©2007创智新程解题步骤步骤1:确定使用什么方法完成任务。步骤2:确定编写规则的语句。步骤3:创建规则。步骤4:将规则绑定到列。步骤5:验证规则是否生效。Copyright©2007创智新程步骤1利用前述的CHECK约束可以轻松实现上述任务,但是,CHECK约束需要修改表的结构。而规则是一个向后兼容的功能,用于执行一些与CHECK约束相同的功能。CHECK约束是用来限制列值的首选标准方法。CHECK约束比规则简明,一个列只能应用一个规则,但是可以应用多个CHECK约束。Copyright©2007创智新程步骤1所以,在不改变表结构的前提下,使用规则来实施上述任务。Copyright©2007创智新程步骤2创建称为规则的对象的语法如下:CREATERULEruleAScondition_expressionrule是新规则的名称。规则名称必须符合标识符规则。可以选择是否指定规则所有者的名称。Copyright©2007创智新程步骤2condition_expression是定义规则的条件。规则可以是WHERE子句中任何有效的表达式,并且可以包含诸如算术运算符、关系运算符和谓词(如IN、LIKE、BETWEEN)之类的元素。规则不能引用列或其它数据库对象。可以包含不引用数据库对象的内置函数.Copyright©2007创智新程步骤2定义规则的条件包含一个变量。每个局部变量的前面都有一个@符号。表达式引用通过UPDATE或INSERT语句需要的值。在创建规则时,可以使用任何名称或符号表示值,但第一个字符必须是@符号示例CREATERULErulZipCodeAS@ZipCodeLIKE‘([0-9][0-9][0-9])[0-9][0-9][0-9]-[0-9][0-9][0-9]’Copyright©2007创智新程步骤3步骤3:创建规则CREATERULECheckIDAS@IDBETWEEN0and10000Copyright©2007创智新程步骤4在使用规则之前,需要将规则绑定到相应的列上。具体的语法如下sp_bindrulerule_name,object_name,[FUTUREONLY]参数rule_name由CREATERULE语句创建的规则名称Object_name绑定了规则的表和列或用户定义的数据类型。用户定义的数据类型由sp_addtype来定义的Copyright©2007创智新程步骤4FUTUREONLY只对约束到用户自定义数据类型的规则才使用将规则CheckID绑定到CustomerID列上的命令如下sp_bindruleCheckID,‘Sample_Customer.CustomerID’Copyright©2007创智新程步骤5步骤5:验证规则是否生效通过系统存储过程sp_helptext,可以查询到对于规则的定义。sp_helptextCheckIDCopyright©2007创智新程步骤5输出Text-------------------------CREATERULECheckIDAS@IDBETWEEN0and10000Copyright©2007创智新程步骤5下面利用如下数值向Sample_Customer表插入数据INSERTSample_Customer(CustomerID)VALUES(0)INSERTSample_Customer(CustomerID)VALUES(2345)INSERTSample_Customer(CustomerID)VALUES(9999)INSERTSample_Customer(CustomerID)VALUES(10001)Copyright©2007创智新程步骤5执行结果CustomerID的值执行结果0执行成功2345执行成功9999执行成功10001列的插入或更新与先前的CREATERULE语句所强制的规则冲突。Copyright©2007创智新程步骤5如何从数据库中删除一条规则利用命令:DROPRULErule_name可以将规则从数据库中删除,其中rule_name是将要删除的规则名称。如何取消列上的规则绑定利用命令:sp_unbindruleobject_name,[FUTUREONLY],可以将列或用户定义数据类型上绑定的规则撤消掉。取消规则意味着规则不在用于列或者用户定义数据类型上。Copyright©2007创智新程步骤5下面我们取消刚刚绑定在表Sample_Customer的CustomerID上的CheckID规则执行:sp_unbindrule‘Sample_Customer.CustomerID’然后:INSERTSample_Customer(CustomerID)VALUES(10001)查询分析器返回结果为成功Copyright©2007创智新程课堂练习1.在Sample_Customer表中的CustomerCreditLimit不能超过$10000,请创建规则实现该之。Copyright©2007创智新程课堂练习2.如下的表中:CREATETABLETeacher(TeacherIDINTPRIMARYKEY,TeacherNameCHAR(50),AddressCHAR(50),PhoneNumberCHAR(12))Teacher表中的字段PhoneNumber的格式为“(4位十进制数)-7位十进制数”组成的字符串。其中,7位十进制数中的首位不能为零。请创建规则实现该之。Copyright©2007创智新程使用缺省使用缺省任务解题步骤课堂联系Copyright©2007创智新程任务二FOX公司的数据录入人员对于Sample_Customer表的CustomerAddress总是要重复输入“Changsha”,由于表已经创造好了,现在需要在不改变表结构的前提下,可以实现自动将Sample_Customer表的CustomerAddress列输入“Changsha”。Copyright©2007创智新程解题步骤步骤1:确定完成任务的方法。步骤2:确定编写缺省的语句。步骤3:创建缺省。步骤4:将缺省绑定到列。步骤5:验证缺省是否生效。Copyright©2007创智新程步骤1步骤1:确定完成任务的方法可以在创建表的时候将某列的值设置成为一个缺省值。在不修改表结构的前提下,我们可以通过创建缺省对象,然后将缺省对象绑定在列对象。所以,在不改变表结构的前提下,使用缺省来实施上述任务Copyright©2007创智新程步骤1缺省对象是一个向后兼容的功能,它执行一些与使用ALTER或CREATETABLE语句的DEFAULT关键字创建的缺省值定义相同的功能。缺省值定义是限制列数据的首选的,并且是标准的方法,因为定义和表存储在一起,当除去表时,将自动除去缺省值定义。DEFAULT对象是为特定数据库定义的。通过将其绑定到缺省值要应用的每个列上,它可为不同表的列所共享。Copyright©2007创智新程步骤2步骤2:确定编写缺省对象的语句。语法:CREATEDEFAULTdefaultAScondition_expression参数:default是缺省对象的名称。缺省对象名称必须符合标识符规则。可以选择是否指定缺省对象所有者的名称。Copyright©2007创智新程步骤2condition_expression是缺省对象的条件。缺省对象可以是WHERE子句中任何有效的表达式,并且可以包含诸如算术运算符、关系运算符和谓词(如IN、LIKE、BETWEEN)之类的元素。缺省对象不能引用列或其它数据库对象。可以包含不引用数据库对象的内置函数。示例:CREATEDEFAULTdefCurrentDateASGETDATE()Copyright©2007创智新程步骤3步骤3:创建缺省对象CREATEDEFAULTdefCityAS‘Changsha’Copyright©2007创智新程步骤4步骤4:将缺省对象帮定到列在使用缺省对象之前,需要将缺省对象绑定到相应的列上.具体的语法如下:sp_binddefaultdefault_name,object_name,[FUTUREONLY]参数defult_name由CREATERULE语句创建的使用缺省的名称Object_name绑定了使用缺省的表和列或用户定义的数据类型。用户定义的数据类型由sp_addtype来定义的。Copyright©2007创智新程步骤4FUTUREONLY只将缺省对象绑定到用户自定义数据类型时使用。命令将缺省对象defCity绑定到CustomerAddress上的命令如下sp_bindefaultdefCity,‘Sample_Customer.CustomerAddress’Copyright©2007创智新程步骤5步骤5:验证缺省对象是否生效通过系统存储过程sp_helptext,可以查询到对于缺省对象的定义。sp_helptextdefCity下面利用如下数值向Sample_Customer表插入数据:INSERTSample_Customer(CustomerID)VALUES(1)INSERTSample_Customer(CustomerID)VALUES(2344)Copyright©2007创智新程步骤5如何从数据库中删除缺省对象利用命令:DROPDEFAULTdefault_name可以将缺省对象从数据库中删除,其中default_name是将要删除缺省对象的名称。如何取消列上的缺省对象绑定利用命令:sp_unbindefaultobject_name[,FUTUREONLY],可以将列或用户定义数据类型上绑定的缺省对象撤消掉。取消缺省对象意味着缺省对象不在用于列或者用户定义数据类型上。Copyright©2007创智新程步骤5示例下面取消刚刚绑定在表Sample_Customer的CustomerAddress上的defCity缺省对象。执行:sp_unbindefault'Sample_Customer.CustomerAddress'Copyright©2007创智新程课堂练习Sample_Customer表中的CustomerCreditLimit缺省为$500,请创建缺省实现。Copyright©2007创智新程管理表中的数据管理表中的数据插入数据任务解题步骤课堂练习更新数据任务解题步骤课堂练习删除数据Copyright©2007创智新程管理表中的数据任务解题步骤课堂练习Copyright©2007创智新程管理表中的数据不但可以利用SQL来查询数据,而且,可以利用SQL来对数据库中的表进行维护。数据库表数据的管理包括向表中插入、更新和删除数据。这些工作由T-SQL的数据操纵语言来完成。数