第八部分表数据操作.ppt

上传人:本田雅阁 文档编号:2529240 上传时间:2019-04-05 格式:PPT 页数:35 大小:1.06MB
返回 下载 相关 举报
第八部分表数据操作.ppt_第1页
第1页 / 共35页
第八部分表数据操作.ppt_第2页
第2页 / 共35页
第八部分表数据操作.ppt_第3页
第3页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第八部分表数据操作.ppt》由会员分享,可在线阅读,更多相关《第八部分表数据操作.ppt(35页珍藏版)》请在三一文库上搜索。

1、第八章 表数据操作,1,本章主题,如何进行表中数据的添加、删除、修改 如何进行数据的导入、导出,表数据操作,前一章讨论了使用SELECT语句在表中查询数据,但是SELECT语句只能检索数据,不能在表中添加、修改、删除数据,若要实现这些功能,则需要通过INSERT、UPDATE和DELETE等语句来实现,这些操作也称为插入查询、更新查询和删除查询,统称为操作查询。操作查询能够对数据库的内容进行更改,但不能返回结果集。,3,第一节 添加数据,4,数据库中的表建好了以后,可以使用INSERT语句添加单条记录,也可以使用INSERT SELECT语句添加子查询结果集。无论采用那种方式添加数据,添加的数

2、据都必须符合相应列的数据类型、约束等,以保证表中数据的完整性。,第一节 INSERT 语句,5,使用INSERT语句可以向已建好的表中每次添加一条记录。该语句的基本语法格式如下: INSERT INTO (列名列表) VALUES () 其中: 目标表名,是指接受数据的表名。 列名列表,欲插入数据的各个列。这些列必须在目标表中存在,顺序可以任意;当对目标表中所有列都添加数据时,列名列表可以省略。列名列表必须用圆括号括起来。 值列表,欲添加的数据值。各数据值与中列的顺序一一对应,且数据都必须符合相应列的数据类型、约束等,以保证表中数据的完整性。若对新记录的所有列都添加数据,并省略了列名列表,则值

3、列表中数据的排列顺序要与目标表中列的顺序一致。值列表也要用圆括号括起来。,6,INSERT 语句,使用INSERT语句时要注意以下几点: (1)必须为主键、不允许为空的列添加数据。 (2)添加的数据必须符合相应列的数据类型、约束,以保证表中数据的完整性。 (3)若添加的数据是char、varchar、datetime数据类型,则该值要用单引号括起来。 (4)对于指定有默认值的列,若要使该列获得其默认值,则在值列表的相应位置上使用DEFAULT关键字。,(1) 为新记录的每个列都添加数据,7,为新记录的每个列都添加数据,可以省略列名列表。若省略了列名列表,则值列表中数据的排列顺序要与目标表设计的

4、字段顺序一致;若不省略列名列表,在列名列表中各列的排列顺序可以是任意的,但值列表中数据要与列名列表中各列一一对应。 例8-1:在学生表中添加学号为15003、姓名是张三的男生、汉族、生日1987-12-1、入学时间2004-9-1、所在班级为2004015、重庆籍、备注信息为空的学生信息。 分析:题目要求在案例数据库的表Students中添加数据,该表中的所有字段及其顺序是Student_id、Student_name、Student_sex、Student_nation、Student_birthday、Student_time、Student_classid、Student_home、St

5、udent_else,要求输入的数据涉及到了所有的字段,即要为新记录的所有字段添加数据,则可以省略,中数据的顺序要与上述字段的先后顺序一致。语句如下: USE STUDENT INSERT INTO Students VALUES (15003,张三,男,01,1987-12-1,2004-9-1,2004015,重庆,NULL),8,为新记录的每个列都添加数据,执行结果如图8.1所示,从图中可以看到在消息区有“(1 行受影响)”的提示,即表示成功添加了一条记录。 可用下列语句查看目的表中新插入的记录。 USE STUDENT SELECT * FROM Students 语句执行结果如图8.

6、2所示。,图 8.1 为新记录的所有列添加数据,图8.2 查看输入的新纪录,(2) 给新记录的部分列添加数据,9,也可以只为新记录的部分列添加数据,对于没有添加数据的列,系统将按照下面的规则为其填充数据: (1)设置有默认值的列填充其默认值。 (2)具有IDENTITY属性的列,且该表IDENTITY_INSERT选项的参数是OFF(默认值是OFF),使用下一个增量标识值。 (3)数据类型为timestamp的列,不必为其添加数据,系统自动使用当前的时间戳值。 (4)若该列允许为空,则使用空值NULL。 若上述四条都不符合,则记录添加失败,新记录不能添加到目标表中。,10,给新记录的部分列添加

7、数据例题,例8-2:在学生表中添加学号为15004、姓名是李四的男生、所在班级为2004015的学生信息。 分析:要求在案例数据库的表Students中添加数据,题目提供了学号、姓名、性别、所在班级的信息,即要为新记录的部分字段添加数据,在列名列表中填写上述字段名(Student_id,Student_name,Student_sex,Student_classid),顺序不限,但在中数据的顺序要与中字段的先后顺序一一对应。 语句如下: USE Student INSERT INTO Students (Student_id,Student_name,Student_sex,Student_c

8、lassid) VALUES (15004,李四,男,2004015),(3) 给新记录的每个字段都使用默认值,11,如果想在新行的全部列中都使用创建表时所指定的默认值,则INSERT语句可以写成下面的形式: INSERT INTO DEFAULT VALUES,(4) 为标识列添加数值,12,若欲添加新记录的目标表有标识列,则要注意该表的IDENTITY_INSERT选项,该选项用于控制能否为标识列指定数值插入,每个表的IDENTITY_INSERT选项的默认值都是OFF。 若表的IDENTITY_INSERT选项的参数是OFF,表示不能为标识列输入指定数值,只能由系统自动填充,用INSER

9、T语句添加记录时,在值列表中直接忽略标识列的数值。 自动填充标识列数据的规则:每次添加新记录时,系统会在前一次自动填充数值的基础上(注意:不是表中自动标识列的最大值),按标识列数值递增的规律计算出一个新值作为新记录的标识列的填充数据。,13,为标识列添加数值例题,例8-3: 在学生成绩表中添加一条学号为“11001”、第3个学期开设的课程号为“4001”的成绩为85的新成绩记录。 分析:成绩表中有一字段SC_id是标识列,在默认情况下,IDENTITY_INSERT选项的默认值是OFF,因添加的数据涉及到除了标识列以外的所有字段,故可以省略列名列表,但在中不用为标识列SC_id指定数据。 语句

10、如下: USE Student INSERT INTO Student_course VALUES (11001,4001,85,3) 若表的IDENTITY_INSERT选项的参数值设置为ON,则添加新记录时必须为标识列指定要输入的数值,系统不再为其自动填充。 可用下面的语句设置表的IDENTITY_INSERT选项的参数: SET IDENTITY_INSERT ON|OFF,(二) INSERT SELECT语句,14,在INSERT语句中使用SELECT子查询,可以将子查询结果集中的记录全部插入到目标表中。 其基本语法格式如下: INSERT INTO () SELECT FROM 源

11、表名 WHERE 使用INSERT SELECT语句时,应注意下面几点: (1)INSERT的要放在圆括号里面,且不使用VALUES。 (2)不要将SELECT子查询写在在圆括号里面,这一点和前面介绍的子查询不一样,要特别注意。 (3)若SELECT子句的和目标表的结构完全一样,则可以省略INSERT子句的。 (4)INSERT子句的和SELECT子句的要注意按顺序一一对应,若省略了INSERT的,则SELECT子句的要和目标表的字段的顺序一一对应,相互对应字段的数据类型、长度、精度等要一致。,15,INSERT SELECT语句例题,例8-4:在Student数据库中建立一个新表ABC,在新

12、表中添加学生表所有记录的学号、姓名、性别、班级信息。 分析:新表ABC中存放学生的学号、姓名、性别、班级等信息,则表ABC只需要这几个字段即可,而且这些字段要和学生表Students中对应字段的数据类型等要一致,比较便捷的方法就是先用SELECT语句,以表Students为源表,建一个空表,语句如下: USE Student SELECT Student_id,Student_name,Student_sex,Student_classid INTO ABC FROM Students WHERE 1=2 语句中条件“12”显然不成立,所以结果集为空,即建了一个空表。然后用下面的语句添加记录:

13、 USE Student INSERT INTO ABC SELECT Student_id,Student_name,Student_sex,Student_classid FROM Students,第二节 修改数据,16,UPDATEFROM 语句,UPDATE 语句,有时需要修改表中现有的数据,在SQL SERVER 2005中,可以用UPDATE语句或UPDATEFROM语句来实现这个功能。,(一) UPDATE语句,17,UPDATE语句可以修改表中的一条或者多条记录,其语法格式如下: UPDATE SET 列名=表达式|NULL|DEFAULT ,n WHERE 搜索条件 其中:

14、 是欲修改记录的表。 SET子句指定要修改的列和所用的数据。修改后的数据由表达式确定,但是必须要符合相应字段的数据类型、长度、精度和约束,以保证数据的完整性。另外,对具有默认值的列可以使用DEFAULT修改为默认值;对允许使用空值的列,也可以使用NULL修改为空值。 WHERE子句用来筛选记录,只对符合搜索条件的记录修改,当省略WHERE子句时,将对表中的所有记录都修改。 例8-5: 将成绩表中课程代码为4001的所有成绩在70分以下(不含70)的成绩都加5分。 语句如下: USE Student UPDATE Student_course SET Student_Grade=Student_

15、Grade+5 WHERE Course_id=4001 AND Student_Grade70,(二) UPDATEFROM语句,18,UPDATEFROM语句可扩展UPDATE语句的功能,可扩展功能主要表现在以下两个方面: 搜索条件可以扩大到其它表中。 在SET子句的表达式中可以从其它表中来获取数据。 UPDATEFROM语句的语法如下: UPDATE SET 列名=表达式|NULL|DEFAULT ,n FROM WHERE 搜索条件 其中,FROM子句用来指定其它表。 例8-6:将姓名为叶海平的学生的电子商务基础课程的成绩改为88分。 分析:要在成绩表Student_course中修改

16、成绩,但是姓名在学生表Students中,课程名在课程表Course中,所以在UPDATE语句中需要用到FROM子句。 语句如下: USE Student UPDATE Student_course SET Student_grade=88 FROM Students AS ST INNER JOIN Student_course AS SC ON SC.Student_id=ST.Student_id INNER JOIN Courses AS CS ON CS.Course_id=SC.Course_id WHERE CS.Course_name=电子商务基础 AND ST. Studen

17、t_name=叶海平,第三节 删除数据,19,对于表中已经确定无用的记录,可以用DELETE或者TRUNCATE TABLE语句删除。,(一) DELETE语句,20,DELETE语句可以从表中删除一条或者多条记录,语法格式如下: DELETE FROM WHERE 其中: FROM 关键字可选。 是要从中删除记录的表。 WHERE 子句用来筛选满足的记录。该子句可选:若不选,则表示删除表中的所有记录;若选,则删除满足条件的记录 例8-7:在成绩表中删除学号为13001的学生的所有成绩。 分析:在成绩表Student_course中删除数据,但不是删除所有数据,是删除学号为13001的同学的所

18、有成绩,所以需要使用WHERE子句来筛选。语句如下: USE Student DELETE Student_course WHERE Student_id=13001,(二) DELETEFROM语句,21,有时候要删除记录的搜索条件不在目标表中,而是在其它表中,则需要在DELETE语句中使用FROM子句指定其它表,以便扩充搜索记录的条件,基本语法如下: DELETE FROM FROM WHERE 其中,FROM子句用来指定其它表,以便扩充搜索记录的条件,其它说明DELETE语法中的一样,在此不再复述。 注意:不要将FROM关键字和FROM子句混淆。 例8-8:在成绩表中删除安静同学的所有成

19、绩。 分析:题目要删除姓名是安静的同学的所有成绩,但是在成绩表Student_course中没有学生姓名字段,但是在学生表Students中有学生姓名字段,所以需要使用FROM子句来扩充WHERE子句的搜索条件。在学生表Student_course和成绩表Students中,有两个相同意义的字段学号Student_id,故这两个表可以通过学号字段进行内连接,以便扩充搜索条件,语句如下: USE Student DELETE Student_course FROM Student_course AS SC INNER JOIN Students AS ST ON SC.Student_id=ST

20、.Student_id WHERE Student_name=安静,(三) TRUNCATE TABLE语句,22,可以使用TRUNCATE TABLE语句删除表中的所有记录,该语句的语法格式如下: TRUNCATE TABLE TRUNCATE TABLE语句只是删除目标表中的所有记录,执行的结果和下面的语句(不带WHERE的DELETE)是等效的: DELETE 但是TRUNCATE TABLE语句执行的速度要更快,占用的日志更少,这是因为 TRUNCATE TABLE直接释放数据页,并且在事务日志中也只记录数据页的释放,而 DELETE 是一行一行地删除,在事务日志中也要记录每一条记录的

21、删除。 TRUNCATE TABLE 不能完全代替不带WHERE 的DELETE命令,不能替代的情况有: 1要保留标识的情况下不能用TRUNCATE TABLE,因为TRUNCATE TABLE会重置标识。 2需要使用触发器的情况下不能使用TRUNCATE TABLE ,它不会激发触发器。 3对于由FOREIGN KEY约束引用的表(即主键所在的表,不是外键所在的表)不能使用TRUNCATE TABLE。 4对于参与了索引视图的表不能使用 TRUNCATE TABLE 。注意:是指索引视图,并非普通视图。 例8-9:删除表ABC中的所有记录。 语句如下: USE Student TRUNCAT

22、E TABLE ABC 也可以用如下语句,效果一样: USE Student DELETE ABC,第四节 数据的导入与导出,23,任何数据库都需要和外界交换数据,数据的导入与导出是数据库管理的基本要求。在SQL Server 2005中,可以将SQL Server中的数据导出到其它的数据源中,例如Access数据库、Excel工作表、文本文件等,也可以将其它数据源中的数据导入到SQL Server中的数据库中。在SQL Server 2005中,把从外界其它数据源输入数据称为导入,从SQL Server的数据库中输出数据到其它数据源称为导出。 下面以将SQL Server中的数据导出到Exc

23、el工作表中为例,介绍SQL Server的数据导出和导入方法。,24,数据的导入与导出例题,例8-10:将学生信息表Students中的所有学生信息导出到Excel工作表中。 具体操作步骤如下: (1)从【开始】菜单上选择【程序】|【Microsoft SQL Server 2005】|【SQL Server Management Studio】 (2)使用【windows身份验证】建立连接,在【对象资源管理器】中展开【数据库】。 (3)用鼠标选中案例数据库Student,单击右键,在右键菜单中选择【任务】命令,在其子菜单中执行【导出数据(X)】,弹出如图8.3所示的 【SQL Server

24、导入和导出向导】对话框,单击【下一步】按钮,弹出如图8.4所示的【选择数据源】对话框。 (4)在图8.4所示的对话框中选择数据源,即导入数据的来源,在本例中数据源使用默认的“SQL Native Client”,数据库选择本书案例数据库“Student”,单击【下一步】按钮,弹出如图8.5所示的【选择目标】对话框。,25,(5)在图8.5的对话框中,可设置目标数据库的相关选项。因要将数据导出在Excel表中,故目标选择“Microsoft Excel”,在【Excel连接设置】中指定目标Excel文件的路径、文件名和版本(可单击【浏览】按钮,用对话框的形式指定目标Excel文件的路径和文件名)

25、。若选中复选框【首行包含列名称】,则在Excel文件的第一行出现相应的字段名,各项设置好后单击【下一步】按钮,弹出如图8.6所示的【指定表复制或查询】对话框。,数据的导入与导出例题,图8.3 SQL Server导入和导出向导对话框,图8.4 选择数据源,26,(6)在图8.6所示的对话框中有两个选项:【复制一个或多个表或视图的数据】,此选项用于复制源数据库中现有表或视图的全部数据;【编写查询以查询指定要传输的数据】,此选项用于编写SQL查询,以便对复制操作的源数据进行操纵或限制,进行有条件的导入导出。本例在此选项卡中选择第一个选项,单击【下一步】按钮,弹出如图8.7所示【选择源表和源视图】对

26、话框。,数据的导入与导出例题,图8.5 选择目标,图8.6 指定表复制或查询,27,数据的导入与导出例题,(7)在如图8.7所示的对话框中,可以选择要导出数据的表或者视图。选中“Students”表,单击【编辑映射】按钮,弹出如图8.8所示的【列映射】对话框。,图8.7 选择源表和源视图,28,数据的导入与导出例题,(8)在图8.8所示的对话框中,可以编辑源表和目标表的列映射。【源】列是数据源表或源视图的字段名,【目标】列是对应输出到目标表中的字段,若不输出某字段,则可在对应的【目标】字段名上选择“忽略”,也可修改目标表的类型、可为空值等,修改各项参数后单击【确定】,可回到图8.7所示的对话框

27、。,图8.8 编辑列映射,29,数据的导入与导出例题,(9)在图8.7所示的对话框中,单击【预览】按钮,可预览从源表或源视图中导出的数据,如图8.9所示。单击【确定】,可回到图8.7所示的对话框。 (10)在图8.7所示的对话框中选择【下一步】,可弹出如图8.10所示的【保存并执行包】对话框,在此对话框中选择【立即执行】,单击【下一步】,弹出的如图8.11所示的【完成该向导】对话框。,图8.9 预览数据,图8.10 保存并执行包,30,数据的导入与导出例题,(11)在如图8.11所示的对话框中,验证向导中选择的选项,若还有需要修改的选项,则可单击【上一步】,回到相应的对话框中继续修改选项;若确

28、认无误,可单击【完成】按钮,执行数据导出操作。,图8.11 导入和导出向导,31,数据的导入与导出例题,(12)在最后一个弹出的如图8.12所示的【执行成功】对话框中,显示的是执行的详细信息报告,若在导入或导出数据的过程中出错,可根据此报告查找出错的原因。,图8.12 执行成功,在SQL Server 2005的数据导入和导出操作中,要特别注意分清哪个数据库是源数据,哪个数据库是目的数据,这是初学者特别容易混淆的。 数据导入和数据导出的操作很类似,具体操作过程就不再介绍。,32,第五节 实训:表数据操作,1实训任务 练习本章介绍的各种表数据操作。 2实训指导 分析:在本章中,为了介绍各种表操作

29、语句的用法,并举了很多例子,请在本书案例数据库中自行执行所有查询语句。 实现步骤: 新建查询。 在查询窗口输入每个例子的语句并执行。语句在此就不再复述,请参阅本章。 用查询语句执行的结果。,本章小结,33,本章主要介绍了基本的、常用的SQL表数据操作,向读者阐述了操作查询语句的基本语法和常用方法,包括:添加数据、修改数据、删除数据、数据的导入与导出等。这些知识是数据库程序设计的基础。,习 题,34,理论题 1. 要在表中添加、修改、删除数据,分别需要用那些语句实现? 2. 使用INSERT语句时要注意事项有那些? 3. 若只为新记录的部分列添加数据,对于没有添加数据的列,系统将如何为其填充数据? 4. TRUNCATE TABLE语句和不带WHERE的DELETE的区别是什么? 5. 自动填充标识列数据的规则是什么? 操作题 1. 在学生表中添加学号为55004、姓名是张三的男生、所在班级为2004015的学生信息。 2. 在学生表中将学号为55004的学生性别改为女。 3. 在学生表中删除学号为55004的学生记录。 4. 将本章例8-10中导出在Excel工作表中的数据导入到案例数据库Student中的表Students_dr(导入的时候新建该表)中。,本章结束,35,Thank You !,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1