1、An Introduction to Database System,第12章 数 据 更 新,An Introduction to Database System,12.1 输入数据 12.2 更改数据 12.3 删除数据,An Introduction to Database System,12.1 插入数据,两种插入数据方式插入单个元组插入子查询结果,An Introduction to Database System,1. 插入单个元组,语句格式 INSERT INTO (,) VALUES ( , ) 功能将新元组插入指定表中。,插入单个元组(续),例1 将一个新学生记录 (学号:9
2、5020;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到S表中。INSERT INTO SVALUES (' 95020 ' , '陈冬' ,'男' , '信息系,18);,An Introduction to Database System,插入单个元组(续),例2 插入一条选课记录( '95020','1 ')INSERT INTO sc(sno,cno)VALUES (' 95020 ',' 1 ');新插入的记录在Grade列上取空值,An Introduc
3、tion to Database System,插入单个元组(续),INTO子句 指定要插入数据的表名及属性列 属性列的顺序可与表定义中的顺序不一致 没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致 指定部分属性列:插入的元组在其余属性列上取空值VALUES子句提供的值必须与INTO子句匹配 值的个数 值的类型,An Introduction to Database System,2. 插入子查询结果,语句格式INSERT INTO ( , )子查询; 功能将子查询结果插入指定表中,An Introduction to Database System,插入子查询结
4、果(续),例3对每一个系,求学生的平均年龄,并把结果存入数据库。第一步:建表CREATE TABLE depage(depa varchar(20) not null, /* 系名*/avg_age smallint) /*学生平均年龄*/第二步:插入数据 INSERT INTO depage(depa, avg_age) SELECT depa, avg(age) FROM s GROUP BY depa,必须一致,An Introduction to Database System,插入子查询结果(续),INTO子句(与插入单条元组类似) 指定要插入数据的表名及属性列 属性列的顺序可与表定
5、义中的顺序不一致 没有指定属性列:表示要插入的是一条完整的元组 指定部分属性列:插入的元组在其余属性列上取空值子查询 SELECT子句目标列必须与INTO子句匹配 值的个数 值的类型,An Introduction to Database System,插入子查询结果(续),DBMS在执行插入语句时会检查所插元组是 否破坏表上已定义的完整性规则 实体完整性 参照完整性 用户定义的完整性 对于有NOT NULL约束的属性列是否提供了非空值 对于有UNIQUE约束的属性列是否提供了非重复值 对于有值域约束的属性列所提供的属性值是否在值域范围内,An Introduction to Database
6、 System,12.2 修改数据,语句格式UPDATE SET =,=WHERE ;功能修改指定表中满足WHERE子句条件的元组,An Introduction to Database System,修改数据(续),三种修改方式 修改某一个元组的值 修改多个元组的值 带子查询的修改语句,An Introduction to Database System,1. 修改某一个元组的值,例4 将学生95020的年龄改为22岁。UPDATE SET WHERE,S age=22Sno=' 95020 ';,An Introduction to Database System,2. 修
7、改多个元组的值,例5 将所有学生的年龄增加1岁。UPDATESET,s age= age+1;,An Introduction to Database System,修改多个元组的值(续),例6 将信息系所有学生的年龄增加1岁。UPDATESETWHERE,s age= age+1depa='信息系';,An Introduction to Database System,3. 带子查询的修改语句,例7 将信息系全体学生的成绩置零将原表备份 SELECT * INTO sc1 FROM scUPDATE sc1 SET grade=0 WHERE sno IN(SELECT s
8、noFROM sWHERE depa='信息系'),UPDATE SC1 SET Grade=0 WHERE 信息系 =(SELECT depaFROM SWHERE S.Sno= SC1.Sno);,An Introduction to Database System,修改数据(续),SET子句指定修改方式要修改的列修改后取值 WHERE子句 指定要修改的元组 缺省表示要修改表中的所有元组,An Introduction to Database System,修改数据(续),DBMS在执行修改语句时会检查修改操作 是否破坏表上已定义的完整性规则 实体完整性 主码不允许修改 用
9、户定义的完整性NOT NULL约束UNIQUE约束值域约束,An Introduction to Database System,12.3 删除数据,DELETEFROM WHERE ; 功能 删除指定表中满足WHERE子句条件的元组 WHERE子句 指定要删除的元组 缺省表示要删除表中的所有元组,An Introduction to Database System,删除数据(续),三种删除方式 删除某一个元组的值 删除多个元组的值 带子查询的删除语句,An Introduction to Database System,1. 删除某一个元组的值,例8 删除学号为95020的学生记录。DELE
10、TEFROMWHERE,s sno=95020';,An Introduction to Database System,2. 删除多个元组的值,例9 删除2号课程的所有选课记录。DELETEFROM scWHERE cno='2'例10 删除所有的学生选课记录。DELETEFROM sc,An Introduction to Database System,3. 带子查询的删除语句,例11删除信息系所有学生的选课记录。DELETE FROM sc1 WHERE sno IN(SELECT snoFROM sWHERE depa='信息系'),An Introduction to Database System,删除数据(续),DBMS在执行删除语句时会检查所插元组 是否破坏表上已定义的完整性规则 参照完整性 不允许删除 级联删除,An Introduction to Database System,更新数据与数据一致性,DBMS在执行插入、删除、更新语句时必 须保证数据库一致性 必须有事务的概念和原子性 完整性检查和保证,