SQL_数据更新2.ppt
文本预览下载声明
5.4 数 据 更 新 简单的数据更新 插入 修改 删除 带子查询的数据更新 插入 修改 删除 1、插入单个元组 语句格式 UPDATE 表名 SET 列名=表达式[,列名=表达式]… [WHERE 条件]; 每一种功能都是通过某些动词命令来实现。 这些命令语句的共同规律: 动词、操作对象、具体内容 下面我们继续学习SQL的数据更新操作。 删除某一个元组的值 [例1] 删除学号为95009的学生记录。 DELETE FROM Student WHERE Sno=95009 语句格式 DELETE FROM 表名 [WHERE 条件]; 功能 删除指定表中满足WHERE子句条件的元组 WHERE子句 指定要删除的元组 缺省表示要删除表中的所有元组 删除方式 删除某一个元组的值 删除多个元组的值 使用DETELE语句时,应该注意哪些事项? 问题:当我们对student表进行以下删除时: DELETE FROM Student WHERE Sno=95001‘ SC表中的数据有和变化? DBMS在执行删除语句时会检查所删除元组是否破坏表上已定义的完整性规则 参照完整性 级联删除 数据更新的操作对象是一个表 ㈠ 插入子查询结果 语句格式 INSERT INTO 表名 [(属性列1 [,属性列2… )] 子查询; 功能 将子查询结果插入指定表中 与插入单个元组一样, 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 带子查询的条件 功能:修改指定表中满足子查询条件的元组。 ㈢ 带子查询的删除语句 [例3] 删除数学系所有学生的选课记录。 DELETE FROM SC WHERE (SELECT Sdept FROM Student WHERE Student.Sno=SC.Sno) =‘MA’ 语句格式 DELETE FROM 表名 WHERE 带子查询的条件 功能:删除指定表中满足子查询条件的元组。 数据更新与数据一致性 DBMS在执行插入、删除、更新语句时必须保证数据库一致性 完整性检查和保证 实体完整性 参照完整性 用户自定义完整性 必须有事务的概念 小 结 这节我们学习了数据更新,包括三种操作: 插入、修改、删除;
显示全部