资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,5.,4,数 据 更 新,简单的数据更新,插入,修改,删除,带子查询的数据更新,插入,修改,删除,1、,插入单个元组,语句格式,INSERT,INTO ,(,),VALUES ( , ),例:,INSERT,INTO Student,VALUES (95020,,陈冬,男, 18 , ,IS),语句格式,UPDATE,SET =,=,WHERE ,;,2、修改数据,例:,UPDATE,Student,SET Sage=22,WHERE,Sno,= 95001 ,每一种功能都是通过某些,动词,命令,来实现。,这些命令语句的共同规律:,动词,、,操作对象,、具体内容,下面我们继续学习,SQL,的数据更新操作。,删除某一个元组的值,例1,删除学号为95009的学生记录。,DELETE,FROM Student,WHERE,Sno,=95009,删除多个元组的值,例2,删除,2,号课程的所有选课记录。,DELETE,FROM SC,WHERE,Cno,=2, 删除数据,没有指定,where,条件,删除表中所有元组的值,例3 删除所有的学生选课记录。,DELETE,FROM SC,语句格式,DELETE,FROM ,WHERE ,;,功能,删除指定表中满足,WHERE,子句条件的元组,WHERE,子句,指定要删除的元组,缺省表示要删除表中的所有元组,删除方式,删除某一个元组的值,删除多个元组的值,使用,DETELE,语句时,应该注意哪些事项?,问题:当我们对,student,表进行以下删除时:,DELETE,FROM Student WHERE,Sno,=95001,SC,表中的数据有和变化?,DBMS,在执行删除语句时会检查所删除元组是否破坏表上已定义的完整性规则,参照完整性,级联删除,数据更新的操作对象是,一个表, 插入子查询结果,二、带子查询的数据更新,例1 对每一个系,求学生的平均年龄,并把结果存入数据库。,分析:,1、对每一个系,求学生的平均年龄,如何做?,SELECT Sdept,AVG(Sage) FROM Student,GROUP BY Sdept,2、把结果存入数据库,如何做?,将查询的结果插入数据库相应的表中。,数据库中没有能够存放系名和平均年龄的表,因此必须创建一个表。,第一步:建表,CREATE TABLE,Deptage,(,Sdept,CHAR(20),/*,系名*/,Avgage,SMALLINT),/*,学生平均年龄*/,第二步:插入数据,INSERT,INTO,Deptage,SELECT,Sdept,,AVG(Sage) FROM Student,GROUP BY,Sdept,语句格式,INSERT,INTO ( , ),子查询,;,功能,将子查询结果插入指定表中,INTO,子句,(与插入单条元组类似),指定要插入数据的表名及列名,1、当新插入的元组不是在每个列上都有值时,必须指定列名,其顺序可与表定义中的顺序不一致;,2、当新插入的元组在每个列上都有值时,可以不指定列名,但是列属性必须与表定义中的顺序一致;,3、当指定部分属性列时,插入的元组在其余属性列上取空值。,子查询,SELECT,子句目标列必须与,INTO,子句匹配,值的个数,值的 顺序,与,插入单个元组一样,,DBMS,在执行带子查询的插入语句时会检查所插元组是否破坏表上已定义的完整性规则:,1、实体完整性,2、参照完整性,3、用户定义的完整性,对于有,NOT NULL,约束的属性列是否提供了非空值,对于有,UNIQUE,约束的属性列是否提供了非重复值,对于有值域约束的属性列所提供的属性值是否在值域范围内,带子查询的修改语句,例,2,将数学系全体学生的成绩置零,。,分析:,1、修改的操作对象是,SC,表,2、修改的条件是“数学系”,是,Student,表中,Sdept,这列的一个取值。,因此,要从,student,中查询,Sdept,的信息。,3、由于修改的操作对象是,SC,表,所以仅查询,Student,表中选修了课程的学生的,Sdept,信息。,SELECT Sdept FROM Student,WHERE Student.Sno = SC.Sno,4、,如何在,Update,语句中表示这个条件?,将,MA,与查询的结果进行比较。,UPDATE,SC,SET Grade=0,WHERE,/,注意这的条件表达式,(,SELECT,Sdept,FROM Student,WHERE Student.,Sno,= SC.,Sno,)= MA,语句格式,UPDATE,SET =,=,WHERE,功能,:修改指定表中满足子查询条件的元组。,DBMS,在执行带子查询的修改语句时会检查,修改操作是否破坏表上已定义的完整性规则,1、实体完整性,主码不允许修改,2、用户定义的完整性,NOT NULL,约束,UNIQUE,约束,值域约束,带子查询的删除语句,例,3,删除数学系所有学生的选课记录。,DELETE,FROM SC,WHERE,(SELECT,Sdept,FROM Student,WHERE Student.,Sno,=SC.,Sno,) =,MA,语句格式,DELETE,FROM ,WHERE,功能,:删除指定表中满足子查询条件的元组。,数据更新与数据一致性,DBMS,在执行插入、删除、更新语句时必须保证数据库一致性,完整性检查和保证,实体完整性 参照完整性 用户自定义完整性,必须有事务的概念,小 结,这节,我们学习了数据更新,包括三种操作:,插入,、,修改,、,删除,;,都包含两种形式:简单的数据更新和带子查询的数据更新。,1、,插入,语句格式,INSERT,INTO ,(,),VALUES (, ),/插入单个元组,或,子查询,/插入多个元组,语句格式,UPDATE,SET =,=,WHERE,条件包括“,带,子查询,的条件”,注意,带,子查询,的条件的表示形式,2、修改,3、删除,语句格式,DELETE,FROM ,WHERE ,条件包括“,带,子查询,的条件”,
展开阅读全文