第十课--管理表中的数据.pptx
《第十课--管理表中的数据.pptx》由会员分享,可在线阅读,更多相关《第十课--管理表中的数据.pptx(79页珍藏版)》请在冰点文库上搜索。
管理表中的数据,Copyright2007-2009创智新程,Copyright2007创智新程,本课教学内容,创建规则创建缺省管理表中的数据插入数据更新数据删除数据将表中的数据存储到新表清空表中数据,Copyright2007创智新程,创建规则,创建规则任务解题步骤课堂练习,Copyright2007创智新程,任务一,FOX公司需要对市场进行调查,要构造一个样本客户表,限定样本空间的大小不能超过10000。
表SAMPLE_CUSTOMER已经建立了,要求不改变表结构的前提下,可以实现自动对样本空间的限制。
表的结构如下:
Copyright2007创智新程,任务,CREATETABLESample_Customer(CustomerIDINTPRIMARYKEY,CustomerNameCHAR(50),CustomerAddressCHAR(50),CustomerCreditLimitMONEY),Copyright2007创智新程,解题步骤,步骤1:
确定使用什么方法完成任务。
步骤2:
确定编写规则的语句。
步骤3:
创建规则。
步骤4:
将规则绑定到列。
步骤5:
验证规则是否生效。
Copyright2007创智新程,步骤1,利用前述的CHECK约束可以轻松实现上述任务,但是,CHECK约束需要修改表的结构。
而规则是一个向后兼容的功能,用于执行一些与CHECK约束相同的功能。
CHECK约束是用来限制列值的首选标准方法。
CHECK约束比规则简明,一个列只能应用一个规则,但是可以应用多个CHECK约束。
Copyright2007创智新程,步骤1,所以,在不改变表结构的前提下,使用规则来实施上述任务。
Copyright2007创智新程,步骤2,创建称为规则的对象的语法如下:
CREATERULEruleAScondition_expressionrule是新规则的名称。
规则名称必须符合标识符规则。
可以选择是否指定规则所有者的名称。
Copyright2007创智新程,步骤2,condition_expression是定义规则的条件。
规则可以是WHERE子句中任何有效的表达式,并且可以包含诸如算术运算符、关系运算符和谓词(如IN、LIKE、BETWEEN)之类的元素。
规则不能引用列或其它数据库对象。
可以包含不引用数据库对象的内置函数.,Copyright2007创智新程,步骤2,定义规则的条件包含一个变量。
每个局部变量的前面都有一个符号。
表达式引用通过UPDATE或INSERT语句需要的值。
在创建规则时,可以使用任何名称或符号表示值,但第一个字符必须是符号示例CREATERULErulZipCodeASZipCodeLIKE(0-90-90-9)0-90-90-9-0-90-90-9,Copyright2007创智新程,步骤3,步骤3:
创建规则CREATERULECheckIDASIDBETWEEN0and10000,Copyright2007创智新程,步骤4,在使用规则之前,需要将规则绑定到相应的列上。
具体的语法如下sp_bindrulerule_name,object_name,FUTUREONLY参数rule_name由CREATERULE语句创建的规则名称Object_name绑定了规则的表和列或用户定义的数据类型。
用户定义的数据类型由sp_addtype来定义的,Copyright2007创智新程,步骤4,FUTUREONLY只对约束到用户自定义数据类型的规则才使用将规则CheckID绑定到CustomerID列上的命令如下sp_bindruleCheckID,Sample_Customer.CustomerID,Copyright2007创智新程,步骤5,步骤5:
验证规则是否生效通过系统存储过程sp_helptext,可以查询到对于规则的定义。
sp_helptextCheckID,Copyright2007创智新程,步骤5,输出Text-CREATERULECheckIDASIDBETWEEN0and10000,Copyright2007创智新程,步骤5,下面利用如下数值向Sample_Customer表插入数据INSERTSample_Customer(CustomerID)VALUES(0)INSERTSample_Customer(CustomerID)VALUES(2345)INSERTSample_Customer(CustomerID)VALUES(9999)INSERTSample_Customer(CustomerID)VALUES(10001),Copyright2007创智新程,步骤5,执行结果,Copyright2007创智新程,步骤5,如何从数据库中删除一条规则利用命令:
DROPRULErule_name可以将规则从数据库中删除,其中rule_name是将要删除的规则名称。
如何取消列上的规则绑定利用命令:
sp_unbindruleobject_name,FUTUREONLY,可以将列或用户定义数据类型上绑定的规则撤消掉。
取消规则意味着规则不在用于列或者用户定义数据类型上。
Copyright2007创智新程,步骤5,下面我们取消刚刚绑定在表Sample_Customer的CustomerID上的CheckID规则执行:
sp_unbindruleSample_Customer.CustomerID然后:
INSERTSample_Customer(CustomerID)VALUES(10001)查询分析器返回结果为成功,Copyright2007创智新程,课堂练习,1.在Sample_Customer表中的CustomerCreditLimit不能超过$10000,请创建规则实现该之。
Copyright2007创智新程,课堂练习,2.如下的表中:
CREATETABLETeacher(TeacherIDINTPRIMARYKEY,TeacherNameCHAR(50),AddressCHAR(50),PhoneNumberCHAR(12)Teacher表中的字段PhoneNumber的格式为“(4位十进制数)-7位十进制数”组成的字符串。
其中,7位十进制数中的首位不能为零。
请创建规则实现该之。
Copyright2007创智新程,使用缺省,使用缺省任务解题步骤课堂联系,Copyright2007创智新程,任务二,FOX公司的数据录入人员对于Sample_Customer表的CustomerAddress总是要重复输入“Changsha”,由于表已经创造好了,现在需要在不改变表结构的前提下,可以实现自动将Sample_Customer表的CustomerAddress列输入“Changsha”。
Copyright2007创智新程,解题步骤,步骤1:
确定完成任务的方法。
步骤2:
确定编写缺省的语句。
步骤3:
创建缺省。
步骤4:
将缺省绑定到列。
步骤5:
验证缺省是否生效。
Copyright2007创智新程,步骤1,步骤1:
确定完成任务的方法可以在创建表的时候将某列的值设置成为一个缺省值。
在不修改表结构的前提下,我们可以通过创建缺省对象,然后将缺省对象绑定在列对象。
所以,在不改变表结构的前提下,使用缺省来实施上述任务,Copyright2007创智新程,步骤1,缺省对象是一个向后兼容的功能,它执行一些与使用ALTER或CREATETABLE语句的DEFAULT关键字创建的缺省值定义相同的功能。
缺省值定义是限制列数据的首选的,并且是标准的方法,因为定义和表存储在一起,当除去表时,将自动除去缺省值定义。
DEFAULT对象是为特定数据库定义的。
通过将其绑定到缺省值要应用的每个列上,它可为不同表的列所共享。
Copyright2007创智新程,步骤2,步骤2:
确定编写缺省对象的语句。
语法:
CREATEDEFAULTdefaultAScondition_expression参数:
default是缺省对象的名称。
缺省对象名称必须符合标识符规则。
可以选择是否指定缺省对象所有者的名称。
Copyright2007创智新程,步骤2,condition_expression是缺省对象的条件。
缺省对象可以是WHERE子句中任何有效的表达式,并且可以包含诸如算术运算符、关系运算符和谓词(如IN、LIKE、BETWEEN)之类的元素。
缺省对象不能引用列或其它数据库对象。
可以包含不引用数据库对象的内置函数。
示例:
CREATEDEFAULTdefCurrentDateASGETDATE(),Copyright2007创智新程,步骤3,步骤3:
创建缺省对象CREATEDEFAULTdefCityASChangsha,Copyright2007创智新程,步骤4,步骤4:
将缺省对象帮定到列在使用缺省对象之前,需要将缺省对象绑定到相应的列上.具体的语法如下:
sp_binddefaultdefault_name,object_name,FUTUREONLY参数defult_name由CREATERULE语句创建的使用缺省的名称Object_name绑定了使用缺省的表和列或用户定义的数据类型。
用户定义的数据类型由sp_addtype来定义的。
Copyright2007创智新程,步骤4,FUTUREONLY只将缺省对象绑定到用户自定义数据类型时使用。
命令将缺省对象defCity绑定到CustomerAddress上的命令如下sp_bindefaultdefCity,Sample_Customer.CustomerAddress,Copyright2007创智新程,步骤5,步骤5:
验证缺省对象是否生效通过系统存储过程sp_helptext,可以查询到对于缺省对象的定义。
sp_helptextdefCity下面利用如下数值向Sample_Customer表插入数据:
INSERTSample_Customer(CustomerID)VALUES
(1)INSERTSample_Customer(CustomerID)VALUES(2344),Copyright2007创智新程,步骤5,如何从数据库中删除缺省对象利用命令:
DROPDEFAULTdefault_name可以将缺省对象从数据库中删除,其中default_name是将要删除缺省对象的名称。
如何取消列上的缺省对象绑定利用命令:
sp_unbindefaultobject_name,FUTUREONLY,可以将列或用户定义数据类型上绑定的缺省对象撤消掉。
取消缺省对象意味着缺省对象不在用于列或者用户定义数据类型上。
Copyright2007创智新程,步骤5,示例下面取消刚刚绑定在表Sample_Customer的CustomerAddress上的defCity缺省对象。
执行:
sp_unbindefaultSample_Customer.CustomerAddress,Copyright2007创智新程,课堂练习,Sample_Customer表中的CustomerCreditLimit缺省为$500,请创建缺省实现。
Copyright2007创智新程,管理表中的数据,管理表中的数据插入数据任务解题步骤课堂练习更新数据任务解题步骤课堂练习删除数据,Copyright2007创智新程,管理表中的数据,任务解题步骤课堂练习,Copyright2007创智新程,管理表中的数据,不但可以利用SQL来查询数据,而且,可以利用SQL来对数据库中的表进行维护。
数据库表数据的管理包括向表中插入、更新和删除数据。
这些工作由T-SQL的数据操纵语言来完成。
数据操纵语言T-SQL的数据操纵语言(DML)可用于操纵数据,具体包括三个部分:
Copyright2007创智新程,管理表中的数据,插入数据更新数据删除数据,Copyright2007创智新程,任务三,FOX公司的人力资源部门在招聘会上录用了公司需要的一批人才。
现在要将这些新员工的信息录入到公司的数据库中去统一管理。
Copyright2007创智新程,解题步骤,步骤1:
确定完成任务的SQL语句。
步骤2:
创建SQL语句。
步骤3:
执行SQL语句。
步骤4:
验证数据是否被插入。
Copyright2007创智新程,步骤1,步骤1:
确定完成任务的SQL语句要完成任务,需要使用INSERT语句对现有表进行数据的插入。
INSERT语句可给表添加一个或多个新行。
语法INSERTINTOtable_or_view(column_list)VALUES(column_value_list)原则如果没有指定column_list,表或者视图中的所有列都会接收数据。
Copyright2007创智新程,步骤1,如果column_list没有为表或视图中的所有列命名,将在列表中没有命名的任何列中插入一个NULL值(或者是默认值)。
在列的列表中没有指定的列都必须允许NULL值或者默认值。
具有IDENTITY属性的列,不要指定值。
属于计算列的列,不要指定值。
具有默认值的列,可以不指定数值。
Copyright2007创智新程,步骤2,步骤2:
创建SQL语句创建INSERTINTO查询时必须要指定:
确定要添加行的数据库表。
确定要添加内容的列。
将要插入到单个列中的值或表达式。
使用sp_helptable_name,可以获取表的结构。
如:
sp_helpEmployees,Copyright2007创智新程,步骤2,确定要添加内容,INSERTINTOEmployees(LastName,FirstName,Title,TitleOfCourtesy,BirthDate,HireDate,Address,City,Region,PostalCode,Country,HomePhone,Extension,Photo,Notes,ReportsTo,Photopath)VALUES(Liu,Wei,SalesRepresentative,Mr.,1960-05-29,1994-11-02,4727-11thAve.N.E,Kirkland,WA,98033,USA,(206)555-3413,3355,NULL,HeholdsaBAinEnglishliteraturefromConcordiaCollege,2,http:
/accweb/emmployees/liuwei.bmp),Copyright2007创智新程,步骤3,步骤3:
执行SQL语句选择SQL语句,按F5执行。
Copyright2007创智新程,步骤4,步骤4:
验证数据是否被插入验证过程如下:
SELECT*FROMEmployeesWHEREEmployeeID=10,Copyright2007创智新程,课堂练习,对于包含有IDENTITY列的表,如何为这个表插入数据?
Copyright2007创智新程,更新表,更新表任务解题步骤课堂练习,Copyright2007创智新程,任务四,FOX公司员工在向Employees表中录入数据的时候,错误的将员工LiuWai的名称,输入为LiuWei,现在需要将名字更正过来。
Copyright2007创智新程,解题步骤,步骤1:
确定完成任务的SQL语句。
步骤2:
创建SQL语句。
步骤3:
执行SQL语句。
步骤4:
验证表中数据是否被更新。
Copyright2007创智新程,步骤1,步骤1:
确定完成任务的SQL语句现在需要更新Employees表,将LiuWai改成LiuWei。
需要使用UPDATE语句。
UPDATE语句可以更改表或视图中单行、行组或所有行的数据值。
更新表的语法如下UPDATEtable_nameSETcolumn_name=expression,column_name=expressionWHEREclause,Copyright2007创智新程,步骤1,示例将Products表中的CategoryID为2的产品的单价提高10%。
UPDATEProductsSETUnitPrice=UnitPrice*1.1WHERECategoryID=2,Copyright2007创智新程,步骤2,步骤2:
创建SQL语句UPDATEEmployeesSETFirstName=WaiWHEREEmployeeID=10,Copyright2007创智新程,步骤3,步骤3:
执行SQL语句在查询分析器中输入SQL语句,选定后,按F5执行。
Copyright2007创智新程,步骤4,步骤4:
验证表中数据是否被更新执行:
SELECTFirstNameFROMEmployeesWHEREEmployeeID=10,Copyright2007创智新程,课堂练习,请将Employees表中EmployeeID为1的记录中字段为Title的值改为:
VicePresident,Sales。
Copyright2007创智新程,删除数据,删除数据任务解题步骤课堂练习,Copyright2007创智新程,任务五,FOX公司员工LiuWai向公司提出离职申请,公司需要将LiuWai的记录从表中删除。
Copyright2007创智新程,解题步骤,步骤1:
确定完成任务的SQL语句。
步骤2:
创建SQL语句。
步骤3:
执行SQL语句。
步骤4:
验证表中数据是否被删除。
Copyright2007创智新程,步骤1,步骤1:
确定完成任务的SQL语句利用DELETE语句可以完成上述任务。
DELETE语句可删除表或视图中的一行或多行。
DELETE的语法DELETEtablename_or_viewnameFROMtable_nameWHEREcaluse,Copyright2007创智新程,步骤2,步骤2:
创建SQL语句DELETEEmployeesWHEREEmployeeID=10,Copyright2007创智新程,步骤3,在查询分析器中输入SQL语句,选定后,按F5执行。
Copyright2007创智新程,步骤4,步骤4:
验证表中数据是否被删除执行:
SELECT*FROMEmployeesWHEREEmployeeID=10,Copyright2007创智新程,课堂练习,对于表中没有指定缺省值的可为空的字段,如果在插入数据的时候,没有为该列指定数值,请问SQLServer将会插入什么值?
对于包含缺省值字段的表,在表中插入数据的时候,如何为这个字段插入缺省数值。
Copyright2007创智新程,将现有表的数据存储到新表,将现有表的数据存储到新表任务解题步骤课堂练习,Copyright2007创智新程,任务六,FOX公司的人力资源部门要对自己的管理信息系统进行维护,需要将Employees表做个备份。
希望将Employees中的数据及表结构导入到名称为Employees_temp的表中。
但是,Employees_temp表并不存在。
Copyright2007创智新程,解题步骤,步骤1:
确定完成任务的SQL语句。
步骤2:
创建SQL语句。
步骤3:
执行SQL语句。
步骤4:
验证表是否被成功创建。
Copyright2007创智新程,步骤1,步骤1:
确定完成任务的SQL语句由于Employees_temp表并不存在,要求使用的SQL语句能够根据要导出数据的表结构生成一个新的表结构,然后将要导出的数据,插入到这个新的表中去。
语法SELECTtable_name.column_name_lists,table_name.column_name_listsINTOnew_table_nameFROMtable_name,Copyright2007创智新程,步骤2,步骤2:
创建SQL语句确定SQL语句如下:
SELECTEmployees.*INTOEmployees_tempFROMEmployees,Copyright2007创智新程,步骤2,或者:
SELECTEmployeeID,LastName,FirstName,Title,TitleOfCourtesy,BirthDate,HireDate,Address,City,Region,PostalCode,Country,HomePhone,Extension,Photo,Notes,ReportsTo,PhotopathINTOEmployees_tempFROMEmployees,Copyright2007创智新程,步骤3,步骤3:
执行SQL语句将上述SQL语句选中后,按F5执行。
Copyright2007创智新程,步骤4,步骤4:
验证表是否被成功创建利用SELECT*FROMEmployees_temp进行查询。
或者,利用sp_helpEmployees_temp查看表的结构,以验证Employees_temp是否被创建。
具体语法如下INSERTINTOtarget_table_name.column_name_listsSELECTtable_nameorview_name.column_name_listsFROMtable_nameorview_nameWHEREclause,Copyright2007创智新程,课堂练习,请将Products表及其数据导入到一个名为Products_temp的表中,现在已知Products_temp表不存在。
如果已经存在一个和Products表的表结构完全相同的一个表Products_temp,现在要将Products表中SupplierID为1的产品记录拷贝到Products_temp中,请问如何做?
Copyright2007创智新程,清空表中的数据,利用DELETE语句,可以删除表中的所有行。
但是,不是一种最快的方法。
要删除表中的所有行,则TRUNCATETABLE语句是一种快速、无日志记录的方法。
语法如下:
TRUNCATETABLEtable_name,Copyright2007创智新程,课堂练习,请将Products表中ProductID为77的记录从表中删除,在删除该记录之前,请将Products表备份到一个新表Products_Temp中。
然后,再利用Products_Temp表中的数据,将ProductID为77的记录还原到Products表中去。
Copyright2007创智新程,课堂小结,在本章中,你学习到了:
利用CREATERULE创建规则并绑定规则。
利用CREATEDEFAULT创建缺省并绑定缺省。
用INSERT语句向表中插入数据。
使用SELECTINTOFROM将表或视图的数据批量转储到一个新表中。
使用INSERTINTOFROM将表或视图的数据批量转储到一个已经存在的表中。
Copyright2007创智新程,课堂小结,用UPDATE语句更新表中的数据。
用DELETE删除表中的数据。
用TRUNCATETABLE彻底清空表中的数据。
Copyright2007创智新程,