《数据增删小技巧》由会员分享,可在线阅读,更多相关《数据增删小技巧(18页珍藏版)》请在金锄头文库上搜索。
1、1,SQL语言主要动词,2,数据操作,主要有查询、插入、删除和修改数据。在进行这些操作时要满足关系模型的完整性约束条件。,1)实体完整性规则2)参照完整性规则3)用户定义的完整性,3,更新数据,1 插入数据2 更新数据3 删除数据,“表”是真正的数据容器,主要考虑对表的增、删、改,4,1 插入数据,思考:INSERT和CREATE的区别?,两种插入数据方式(1)插入单个元组(2)插入多个元组,(1)插入单个元组语句格式:INSERTINTO (,)VALUES ( , ),5,插入数据,INTO子句指定要插入数据的表名及属性列属性列的顺序可与表定义中的顺序不一致指定部分属性列:插入的元组在其余
2、属性列上取空值没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致VALUES子句 提供的值必须与INTO子句匹配值的个数值的类型,INSERT INTO Student(Sno,Sname,deptno,Sage) VALUES(1010,X,10,20)INSERT INTO Student VALUES(1011,Y,女,10,20)INSERT INTO Student(Sno,Sname) VALUES(1013,Z),6,插入多个元组: INSERT INTO ( , ) 子查询;,例 对每一个系,求学生的平均年龄,并把结果存入数据库。第一步:建表 CRE
3、ATE TABLE Deptage (Sdept CHAR(15), /* 系名*/ Avgage SMALLINT); /*学生平均年龄*/第二步:插入数据 INSERT INTO Deptage(Sdept,Avgage) SELECT deptno,AVG(Sage) FROM Student GROUP BY deptno;,7,插入数据,DBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则实体完整性参照完整性用户定义的完整性对于有NOT NULL约束的属性列是否提供了非空值 对于有UNIQUE约束的属性列是否提供了非重复值 对于有值域约束的属性列所提供的属性值是否在值
4、域范围内,8,2 更新数据,思考:UPDATE和ALTER的区别?,语句格式 UPDATE SET =,= WHERE ;功能修改指定表中满足WHERE子句条件的元组,三种修改方式修改某一个元组的值修改多个元组的值带子查询的修改语句,9,更新数据,1. 修改某一个元组的值例 将学生S1的年龄改为22岁。 UPDATE Student SET Sage=22 WHERE Sno=S1;2. 修改多个元组的值例 将所有学生的年龄增加1岁。 UPDATE Student SET Sage= Sage+1;,10,更新数据,3.带子查询的修改语句例7 将计算机科学系全体学生的成绩置零。UPDATE S
5、C SET Grade=0WHERE (SELECT Sdept FROM Student WHERE Student.Sno = SC.Sno)=CS;,11,更新数据,DBMS在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则,12,3 删除数据,思考:DELETE和DROP的区别?,语句格式: DELETE FROM WHERE ;功能删除指定表中满足WHERE子句条件的元组WHERE子句指定要删除的元组缺省表示要修改表中的所有元组,表定义还在,13,删除数据,三种删除方式删除某一个元组的值删除多个元组的值带子查询的删除语句删除学号为1001的学生记录。删除信息系所有学生的选课
6、记录。删除所有的学生选课记录。,14,删除数据,DBMS在执行删除语句时会检查所删元组是否破坏表上已定义的完整性规则参照完整性不允许删除,15,3 更新视图,对视图来进行插入、更新和删除操作实际上最终都会直接作用于基本表。更新操作会受到基本表约束的限制。视图中每一行数据都必须映射到视图使用的基本表的单独一个记录上,16,视图的更新示意 视图中不存放数据,只存放视图的定义,所以对视图的更新操作最终都将转换成对基表的操作。,例CREATE VIEW S_computer(sno, sname ) AS SELECT * FROM STUDENT WHERE sdept=CS,INSTER INTO
7、 S_computervalues ( S08 , 张立),insert into STUDENTvalues ( P08 , 张立 , null , null , CS),转换为,STUDENT(sno, sname,sage,sdept,smagor ),17,CREATE VIEW sn_ageAS (SELECT Sname, sage FROM Student ),INSERT INTO SN_AGEvalues (张立 ,23 ),INSERT INTO Studentvalues (null,张立,23, null,null),转换为,缺主码信息,视图的更新示意 视图中不存放数据,只存放视图的定义,所以对视图的更新操作最终都将转换成对基表的操作。,STUDENT(sno, sname,sage,sdept,smagor ),18,实验题,数据更新操作 1.插入数据 1)向STUDENT表插入数据:2.修改数据 将张星老师数据结构课的学生成绩全部加2分 3.删除数据 删除马朝阳同学的所有选课记录,