第十课--管理表中的数据

上传人:仙*** 文档编号:242494072 上传时间:2024-08-25 格式:PPTX 页数:79 大小:218.26KB
返回 下载 相关 举报
第十课--管理表中的数据_第1页
第1页 / 共79页
第十课--管理表中的数据_第2页
第2页 / 共79页
第十课--管理表中的数据_第3页
第3页 / 共79页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Copyright 200,7 创智新程,*,管理表中的数据,Copyright2007-2009 创智新程,Copyright 200,7 创智新程,本课教学内容,创建规则,创建缺省,管理表中的数据,插入数据,更新数据,删除数据,将表中的数据存储到新表,清空表中数据,Copyright 200,7 创智新程,创建规则,创建规则,任务,解题步骤,课堂练习,Copyright 200,7 创智新程,任务一,FOX公司需要对市场进行调查,要构造一个样本客户表,限定样本空间的大小不能超过10000。,表SAMPLE_CUSTOMER已经建立了,要求不改变表结构的前提下,可以实现自动对样本空间的限制 。表的结构如下:,Copyright 200,7 创智新程,任务,CREATE TABLE Sample_Customer(,CustomerID INT PRIMARY KEY,CustomerName CHAR(50),CustomerAddress CHAR(50),CustomerCreditLimit MONEY),Copyright 200,7 创智新程,解题步骤,步骤1:确定使用什么方法完成任务。,步骤2:确定编写规则的语句。,步骤3:创建规则。,步骤4:将规则绑定到列。,步骤5:验证规则是否生效。,Copyright 200,7 创智新程,步骤1,利用前述的CHECK约束可以轻松实现上述任务,但是,CHECK约束需要修改表的结构。,而规则是一个向后兼容的功能,用于执行一些与 CHECK 约束相同的功能。CHECK 约束是用来限制列值的首选标准方法。,CHECK 约束比规则简明,一个列只能应用一个规则,但是可以应用多个CHECK 约束。,Copyright 200,7 创智新程,步骤1,所以,在不改变表结构的前提下,使用规则来实施上述任务。,Copyright 200,7 创智新程,步骤2,创建称为规则的对象的语法如下:,CREATE RULE rule,AS condition_expression,rule是新规则的名称。规则名称必须符合标识符规则。可以选择是否指定规则所有者的名称。,Copyright 200,7 创智新程,步骤2,condition_expression 是定义规则的条件。,规则可以是 WHERE 子句中任何有效的表达式,并且可以包含诸如算术运算符、关系运算符和谓词(如 IN、LIKE、BETWEEN),之类的元素。,规则不能引用列或其它数据库对象。可以包含不引用数据库对象的内置函数.,Copyright 200,7 创智新程,步骤2,定义规则的条件包含一个变量。每个局部变量的前面都有一个符号。表达式引用通过UPDATE或INSERT 语句需要的值。在创建规则时,可以使用任何名称或符号表示值,但第一个字符必须是符号,示例,CREATE RULE rulZipCode,AS,ZipCode LIKE (0-9 0-9 0-9)0-90-90-9-0-90-90-9,Copyright 200,7 创智新程,步骤3,步骤3:创建规则,CREATE RULE CheckID,AS,ID BETWEEN 0 and 10000,Copyright 200,7 创智新程,步骤4,在使用规则之前,需要将规则绑定到相应的列上。具体的语法如下,sp_bindrule rule_name, object_name, FUTUREONLY,参数,rule_name 由 CREATE RULE 语句创建的规则名称,Object_name 绑定了规则的表和列或用户定义的数据类型。用户定义的数据类型由sp_addtype来定义的,Copyright 200,7 创智新程,步骤4,FUTUREONLY,只对约束到用户自定义数据类型的规则才使用,将,规则CheckID绑定到CustomerID列上的命令如下,sp_bindrule CheckID,Sample_Customer.CustomerID,Copyright 200,7 创智新程,步骤5,步骤5:验证规则是否生效,通过系统存储过程sp_helptext,可以查询到对于规则的定义。,sp_helptext CheckID,Copyright 200,7 创智新程,步骤5,输出,Text,-,CREATE RULE CheckID,AS,ID BETWEEN 0 and 10000,Copyright 200,7 创智新程,步骤5,下面利用如下数值向Sample_Customer表插入数据,INSERT Sample_Customer (CustomerID) VALUES(0),INSERT Sample_Customer (CustomerID) VALUES(2345),INSERT Sample_Customer (CustomerID) VALUES(9999),INSERT Sample_Customer (CustomerID) VALUES(10001),Copyright 200,7 创智新程,步骤5,执行结果,CustomerID的值,执行结果,0,执行成功,2345,执行成功,9999,执行成功,10001,列的插入或更新与先前的 CREATE RULE 语句所强制的规则冲突。,Copyright 200,7 创智新程,步骤5,如何从数据库中删除一条规则,利用命令:DROP RULE rule_name 可以将规则从数据库中删除,其中rule_name是将要删除的规则名称。,如何取消列上的规则绑定,利用命令:sp_unbindrule object_name , FUTUREONLY, 可以将列或用户定义数据类型上绑定的规则撤消掉。取消规则意味着规则不在用于列或者用户定义数据类型上。,Copyright 200,7 创智新程,步骤5,下面我们取消刚刚绑定在表Sample_Customer的CustomerID上的CheckID规则,执行:,sp_unbindrule Sample_Customer.CustomerID,然后:,INSERT Sample_Customer (CustomerID) VALUES(10001),查询分析器返回结果为成功,Copyright 200,7 创智新程,课堂练习,1.在Sample_Customer表中的CustomerCreditLimit不能超过$10000,请创建规则实现该之。,Copyright 200,7 创智新程,课堂练习,2.如下的表中:,CREATE TABLE Teacher,(,TeacherID INT PRIMARY KEY,TeacherName CHAR(50),Address CHAR(50),PhoneNumber CHAR(12),),Teacher表中的字段PhoneNumber,的格式为“(4位十进制数)-7位十进制数”组成的字符串。其中,7位十进制数中的首位不能为零。请创建规则实现该之,。,Copyright 200,7 创智新程,使用缺省,使用缺省,任务,解题步骤,课堂联系,Copyright 200,7 创智新程,任务二,FOX,公司的数据录入人员对于,Sample_Customer表的CustomerAddress总是要重复输入“Changsha”,由于表已经创造好了,现在需要在不改变表结构的前提下,可以实现自动将Sample_Customer表的CustomerAddress列输入“Changsha,”。,Copyright 200,7 创智新程,解题步骤,步骤1:确定完成任务的方法。,步骤2:确定编写缺省的语句。,步骤3:创建缺省。,步骤4:将缺省绑定到列。,步骤5:验证缺省是否生效。,Copyright 200,7 创智新程,步骤1,步骤1:确定完成任务的方法,可以在创建表的时候将某列的值设置成为一个缺省值。在不修改表结构的前提下,我们可以通过创建缺省对象,然后将缺省对象绑定在列对象。,所以,在不改变表结构的前提下,使用缺省来实施上述任务,Copyright 200,7 创智新程,步骤1,缺省对象是一个向后兼容的功能,它执行一些与使用 ALTER 或 CREATE TABLE 语句的 DEFAULT 关键字创建的缺省值定义相同的功能。,缺省值定义是限制列数据的首选的,并且是标准的方法,因为定义和表存储在一起,当除去表时,将自动除去缺省值定义。,DEFAULT 对象是为特定数据库定义的。通过将其绑定到缺省值要应用的每个列上,它可为不同表的列所共享。,Copyright 200,7 创智新程,步骤2,步骤2:确定编写缺省对象的语句。,语法:,CREATE DEFAULT default,AS condition_expression,参数:,default,是缺省对象的名称。缺省对象名称必须符合标识符规则。可以选择是否指定缺省对象所有者的名称。,Copyright 200,7 创智新程,步骤2,condition_expression 是缺省对象的条件。缺省对象可以是 WHERE 子句中任何有效的表达式,并且可以包含诸如算术运算符、关系运算符和谓词(如 IN、LIKE、BETWEEN)之类的元素。缺省对象不能引用列或其它数据库对象。可以包含不引用数据库对象的内置函数。,示例:,CREATE DEFAULT defCurrentDate,AS GETDATE(),Copyright 200,7 创智新程,步骤3,步骤3:创建缺省对象,CREATE DEFAULT defCity,AS Changsha,Copyright 200,7 创智新程,步骤4,步骤4:将缺省对象帮定到列,在使用缺省对象之前,需要将缺省对象绑定到相应的列上.具体的语法如下:,sp_binddefault default_name, object_name ,FUTUREONLY,参数,defult_name 由 CREATE RULE 语句创建的使用缺省的名称,Object_name 绑定了使用缺省的表和列或用户定义的数据类型。用户定义的数据类型由sp_addtype来定义的。,Copyright 200,7 创智新程,步骤4,FUTUREONLY 只将缺省对象绑定到用户自定义数据类型时使用。,命令,将缺省对象defCity绑定到CustomerAddress上的命令如下,sp_bindefault defCity,Sample_Customer.CustomerAddress,Copyright 200,7 创智新程,步骤5,步骤5:验证缺省对象是否生效,通过系统存储过程sp_helptext,可以查询到对于缺省对象的定义。,sp_helptext defCity,下面利用如下数值向Sample_Customer表插入数据:,INSERT Sample_Customer (CustomerID) VALUES(1),INSERT Sample_Customer (CustomerID) VALUES(2344),Copyright 200,7 创智新程,步骤5,如何从数据库中删除缺省对象,利用命令:,DROP DEFAULT default_name 可以将缺省对象从数据库中删除,其中default_name是,将要删除缺省对象的名称。,如何取消列上的缺省对象绑定,利用命令:,sp_unbindefault object_name ,FUTUREONLY,可以将列或用户定义数据类型上绑定的缺省对象撤消掉。,取消缺省对象意味着缺省对象不在用于列或者用户定义数据类型上。,Copyright 200,7 创智新程,步骤5,示例,下面取消刚刚绑定在表Sample_Customer的CustomerAddress上的defCity缺省对象。,执行:,sp_unbindefault Sample_Customer.CustomerAddress,Copyright 200,7 创智新程,课堂练习,Sample_Customer,表中的,CustomerCreditLimit,缺省为$500,请创建缺省实现。,Copyright 200,7 创智新程,管理表中的数据,管理表中的数据,插入数据,任务,解题步骤,课堂练习,更新数据,任务,解题步骤,课堂练习,删除数据,Copyright 200,7 创智新程,管理表中的数据,任务,解题步骤,课堂练习,Copyright 200,7 创智新程,管理表中的数据,不但可以利用SQL来查询数据,而且,可以利用SQL来对数据库中的表进行维护。,数据库表数据的管理包括向表中插入、更新和删除数据。这些工作由T-SQL,的数据操纵语言来完成。,数据操纵语言,T-SQL的数据操纵语言(DML)可用于操纵数据,具体包括三个部分:,Copyright 200,7 创智新程,管理表中的数据,插入数据,更新数据,删除数据,Copyright 200,7 创智新程,任务三,FOX,公司的人力资源部门在招聘会上录用了公司需要的一批人才。现在要将这些新员工的信息录入到公司的数据库中去统一管理。,Copyright 200,7 创智新程,解题步骤,步骤1:确定完成任务的SQL语句。,步骤2:创建SQL语句。,步骤3:执行SQL语句。,步骤4:验证数据是否被插入。,Copyright 200,7 创智新程,步骤1,步骤1:确定完成任务的SQL语句,要完成任务,需要使用INSERT语句对现有表进行数据的插入。INSERT 语句可给表添加一个或多个新行。,语法,INSERT INTO table_or_view (column_list),VALUES (column_value_list),原则,如果没有指定 column_list ,表或者视图中的所有列都会接收数据。,Copyright 200,7 创智新程,步骤1,如果 column_list 没有为表或视图中的所有列命名,将在列表中没有命名的任何列中插入一个 NULL 值(或者是默认值)。,在列的列表中没有指定的列都必须允许 NULL值或者默认值。,具有 IDENTITY 属性的列,不要指定值。,属于计算列的列,不要指定值。,具有默认值的列,可以不指定数值。,Copyright 200,7 创智新程,步骤2,步骤2:创建SQL语句,创建 INSERT INTO 查询时必须要指定:,确定要添加行的数据库表。,确定要添加内容的列。,将要插入到单个列中的值或表达式。,使用 sp_help table_name, 可以获取表的结构。如:sp_help Employees,Copyright 200,7 创智新程,步骤2,确定要添加内容,INSERT INTO Employees,(LastName, FirstName, Title, TitleOfCourtesy,BirthDate, HireDate, Address, City, Region, PostalCode,Country, HomePhone, Extension, Photo, Notes, ReportsTo, Photopath),VALUES(Liu, Wei, Sales Representative, Mr., 1960-05-29, 1994-11-02, 4727-11th Ave. N.E, Kirkland, WA, 98033, USA, (206) 555-3413, 3355, NULL, He holds a BA in English literature from Concordia College, 2,http:/accweb/emmployees/liuwei.bmp),Copyright 200,7 创智新程,步骤3,步骤3:执行SQL语句,选择SQL语句,按F5执行。,Copyright 200,7 创智新程,步骤4,步骤4:验证数据是否被插入,验证过程如下:,SELECT * FROM Employees WHERE EmployeeID=10,Copyright 200,7 创智新程,课堂练习,对于包含有,IDENTITY,列的表,如何为这个表插入数据?,Copyright 200,7 创智新程,更新表,更新表,任务,解题 步骤,课堂练习,Copyright 200,7 创智新程,任务四,FOX公司员工在向Employees表中录入数据的时候,错误的将员工Liu Wai的名称,输入为Liu Wei,现在需要将名字更正过来。,Copyright 200,7 创智新程,解题步骤,步骤1:确定完成任务的SQL语句。,步骤2:创建SQL语句。,步骤3:执行SQL语句。,步骤4:验证表中数据是否被更新。,Copyright 200,7 创智新程,步骤1,步骤1:确定完成任务的SQL语句,现在需要更新Employees表,将Liu Wai改成Liu Wei。需要使用UPDATE语句。UPDATE 语句可以更改表或视图中单行、行组或所有行的数据值。,更新表的语法如下,UPDATE table_name,SET column_name = expression ,column_name = expression,WHERE clause,Copyright 200,7 创智新程,步骤1,示例,将Products表中的CategoryID 为 2的产品的单价提高10%。,UPDATE Products,SET UnitPrice = UnitPrice * 1.1,WHERE CategoryID = 2,Copyright 200,7 创智新程,步骤2,步骤2:,创建SQL,语句,UPDATE Employees,SET FirstName = Wai,WHERE EmployeeID = 10,Copyright 200,7 创智新程,步骤3,步骤3:执行SQL语句,在查询分析器中输入SQL语句,选定后,按F5执行,。,Copyright 200,7 创智新程,步骤4,步骤4:验证表中数据是否被更新,执行:,SELECT FirstName,FROM Employees,WHERE EmployeeID = 10,Copyright 200,7 创智新程,课堂练习,请将Employees表中EmployeeID为1的记录中字段为Title的值改为:Vice President, Sales。,Copyright 200,7 创智新程,删除数据,删除数据,任务,解题步骤,课堂练习,Copyright 200,7 创智新程,任务五,FOX公司员工Liu Wai 向公司提出离职申请,公司需要将Liu Wai的记录从表中删除。,Copyright 200,7 创智新程,解题步骤,步骤,1:确定完成任务的SQL语句。,步骤2:创建SQL语句。,步骤3:执行SQL语句,。,步骤4:验证表中数据是否被删除。,Copyright 200,7 创智新程,步骤1,步骤1:确定完成任务的SQL语句,利用DELETE语句可以完成上述任务。DELETE 语句可删除表或视图中的一行或多行。,DELETE的语法,DELETE tablename_or_viewname,FROM table_name,WHERE caluse,Copyright 200,7 创智新程,步骤2,步骤2:创建,SQL,语句,DELETE Employees,WHERE EmployeeID = 10,Copyright 200,7 创智新程,步骤3,在查询分析器中输入,SQL语句,选定后,按F5,执行。,Copyright 200,7 创智新程,步骤4,步骤4:验证表中数据是否被删除,执行:,SELECT *,FROM Employees,WHERE EmployeeID = 10,Copyright 200,7 创智新程,课堂练习,对于表中没有指定缺省值的可为空的字段,如果在插入数据的时候,没有为该列指定数值,请问SQL Server将会插入什么值?,对于包含缺省值字段的表,在表中插入数据的时候,如何为这个字段插入缺省数值。,Copyright 200,7 创智新程,将现有表的数据存储到新表,将现有表的数据存储到新表,任务,解题步骤,课堂练习,Copyright 200,7 创智新程,任务六,FOX,公司的人力资源部门要对自己的管理信息系统进行维护,需要将,Employees,表做个备份。希望将,Employees,中的数据及表结构导入到名称为,Employees_temp,的表中。但是,,Employees_temp,表并不存在。,Copyright 200,7 创智新程,解题步骤,步骤1:确定完成任务的SQL语句。,步骤2:创建SQL语句。,步骤3:执行SQL语句。,步骤4:验证表是否被成功创建。,Copyright 200,7 创智新程,步骤1,步骤1:确定完成任务的SQL语句,由于Employees_temp表并不存在,要求使用的SQL语句能够根据要导出数据的表结构生成一个新的表结构,然后将要导出的数据,插入到这个新的表中去。,语法,SELECT table_name.column_name_lists,table_name.column_name_lists,INTO new_table_name,FROM table_name,Copyright 200,7 创智新程,步骤2,步骤2:创建SQL语句,确定SQL 语句如下:,SELECT Employees.*,INTO Employees_temp,FROM Employees,Copyright 200,7 创智新程,步骤2,或者:,SELECT EmployeeID,LastName, FirstName, Title, TitleOfCourtesy, BirthDate, HireDate, Address,City,Region, PostalCode, Country, HomePhone, Extension,Photo, Notes, ReportsTo,Photopath,INTO Employees_temp,FROM Employees,Copyright 200,7 创智新程,步骤3,步骤3:执行SQL语句,将上述SQL语句选中后,按F5执行。,Copyright 200,7 创智新程,步骤4,步骤4:验证表是否被成功创建,利用SELECT * FROM Employees_temp进行查询。或者,利用sp_help Employees_temp 查看表的结构,以验证Employees_temp是否被创建。,具体语法如下,INSERT INTO target_table_name.column_name_lists,SELECT table_name or view_name.column_name_lists,FROM table_name or view_name,WHERE clause,Copyright 200,7 创智新程,课堂练习,请将Products表及其数据导入到一个名为Products_temp的表中,现在已知Products_temp表不存在。,如果已经存在一个和Products表的表结构完全相同的一个表Products_temp,现在要将Products表中SupplierID为1的产品记录拷贝到Products_temp中,请问如何做?,Copyright 200,7 创智新程,清空表中的数据,利用,DELETE,语句,可以删除表中的所有行。但是,不是一种最快的方法。要删除表中的所有行,则,TRUNCATE TABLE,语句是一种快速、无日志记录的方法。,语法如下:,TRUNCATE TABLE table_name,Copyright 200,7 创智新程,课堂练习,请将,Products,表中,ProductID,为77的记录从表中删除,在删除该记录之前,请将,Products,表备份到一个新表,Products_Temp,中。然后,再利用,Products_Temp,表中的数据,将,ProductID,为77的记录还原到,Products,表中去。,Copyright 200,7 创智新程,课堂小结,在本章中,你学习到了:,利用CREATE RULE创建规则并绑定规则。,利用CREATE DEFAULT创建缺省并绑定缺省。,用INSERT语句向表中插入数据。,使用SELECT INTOFROM 将表或视图的数据批量转储到一个新表中。,使用INSERT INTOFROM 将表或视图的数据批量转储到一个已经存在的表中。,Copyright 200,7 创智新程,课堂小结,用UPDATE语句更新表中的数据。,用DELETE删除表中的数据。,用TRUNCATE TABLE彻底清空表中的数据。,Copyright 200,7 创智新程,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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