数据库系统概论PPT教程-第三章 关系数据库标准语言SQL_(续2).ppt_第1页
数据库系统概论PPT教程-第三章 关系数据库标准语言SQL_(续2).ppt_第2页
数据库系统概论PPT教程-第三章 关系数据库标准语言SQL_(续2).ppt_第3页
数据库系统概论PPT教程-第三章 关系数据库标准语言SQL_(续2).ppt_第4页
数据库系统概论PPT教程-第三章 关系数据库标准语言SQL_(续2).ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AnIntroductiontoDatabaseSystem,数据库系统概论AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL(续2),AnIntroductiontoDatabaseSystem,第三章关系数据库标准语言SQL,3.1SQL概述3.2学生-课程数据库3.3数据定义3.4数据查询3.5数据更新3.6视图3.7小结,AnIntroductiontoDatabaseSystem,3.5数据更新,3.5.1插入数据3.5.2修改数据3.5.3删除数据,AnIntroductiontoDatabaseSystem,3.5.1插入数据,两种插入数据方式1.插入元组2.插入子查询结果可以一次插入多个元组,AnIntroductiontoDatabaseSystem,一、插入元组,语句格式INSERTINTO(,)VALUES(,)功能将新元组插入指定表中,AnIntroductiontoDatabaseSystem,插入元组(续),INTO子句属性列的顺序可与表定义中的顺序不一致没有指定属性列指定部分属性列VALUES子句提供的值必须与INTO子句匹配值的个数值的类型,AnIntroductiontoDatabaseSystem,学生-课程数据库,学生-课程模式S-T:学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade),AnIntroductiontoDatabaseSystem,插入元组(续),例1将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。,INSERTINTOStudent(Sno,Sname,Ssex,Sdept,Sage)VALUES(200215128,陈冬,男,IS,18);,AnIntroductiontoDatabaseSystem,插入元组(续),例2将学生张成民的信息插入到Student表中。(学号:200215126;姓名:张成民;性别:男;所在系:CS;年龄:18岁),INSERTINTOStudentVALUES(200215126,张成民,男,18,CS);,AnIntroductiontoDatabaseSystem,插入元组(续),例3插入一条选课记录(200215128,1)。,INSERTINTOSC(Sno,Cno)VALUES(200215128,1);RDBMS将在新插入记录的Grade列上自动地赋空值。,或者:INSERTINTOSCVALUES(200215128,1,NULL);,AnIntroductiontoDatabaseSystem,二、插入子查询结果,语句格式INSERTINTO(,)子查询;功能将子查询结果插入指定表中,AnIntroductiontoDatabaseSystem,插入子查询结果(续),INTO子句(与插入元组类似)子查询SELECT子句目标列必须与INTO子句匹配值的个数值的类型,AnIntroductiontoDatabaseSystem,插入子查询结果(续),例4对每一个系,求学生的平均年龄,并把结果存入数据库。,第一步:建表CREATETABLEDept_age(SdeptCHAR(15)/*系名*/Avg_ageSMALLINT);/*学生平均年龄*/,AnIntroductiontoDatabaseSystem,插入子查询结果(续),第二步:插入数据INSERTINTODept_age(Sdept,Avg_age)SELECTSdept,AVG(Sage)FROMStudentGROUPBYSdept;,AnIntroductiontoDatabaseSystem,插入子查询结果(续),RDBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则实体完整性参照完整性用户定义的完整性NOTNULL约束UNIQUE约束值域约束,AnIntroductiontoDatabaseSystem,3.5数据更新,3.5.1插入数据3.5.2修改数据3.5.3删除数据,AnIntroductiontoDatabaseSystem,3.4.2修改数据,语句格式UPDATESET=,=WHERE;功能修改指定表中满足WHERE子句条件的元组,AnIntroductiontoDatabaseSystem,修改数据(续),SET子句指定修改方式要修改的列修改后取值WHERE子句指定要修改的元组缺省表示要修改表中的所有元组,AnIntroductiontoDatabaseSystem,修改数据(续),三种修改方式1.修改某一个元组的值2.修改多个元组的值3.带子查询的修改语句,AnIntroductiontoDatabaseSystem,1.修改某一个元组的值,例5将学生200215121的年龄改为22岁,UPDATEStudentSETSage=22WHERESno=200215121;,AnIntroductiontoDatabaseSystem,2.修改多个元组的值,例6将所有学生的年龄增加1岁,UPDATEStudentSETSage=Sage+1;,AnIntroductiontoDatabaseSystem,3.带子查询的修改语句,例7将计算机科学系全体学生的成绩置零。,UPDATESCSETGrade=0WHERECS=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);,AnIntroductiontoDatabaseSystem,修改数据(续),RDBMS在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则实体完整性主码不允许修改用户定义的完整性NOTNULL约束UNIQUE约束值域约束,AnIntroductiontoDatabaseSystem,3.5数据更新,3.5.1插入数据3.5.2修改数据3.5.3删除数据,AnIntroductiontoDatabaseSystem,3.5.3删除数据,语句格式DELETEFROMWHERE;功能删除指定表中满足WHERE子句条件的元组WHERE子句指定要删除的元组缺省表示要删除表中的全部元组,表的定义仍在字典中,AnIntroductiontoDatabaseSystem,删除数据(续),三种删除方式1.删除某一个元组的值2.删除多个元组的值3.带子查询的删除语句,AnIntroductiontoDatabaseSystem,1.删除某一个元组的值,例8删除学号为200215128的学生记录。,DELETEFROMStudentWHERESno=200215128;,AnIntroductiontoDatabaseSystem,2.删除多个元组的值,例9删除所有的学生选课记录。,DELETEFROMSC;,AnIntroductiontoDatabaseSystem,3.带子查询的删除语句,例10删除计算机科学系所有学生的选课记录。,DELETEFROMSCWHERECS=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);,AnIntroductiontoDatabaseSystem,第三章关系数据库标准语言SQL,3.1SQL概述3.2学生-课程数据库3.3数据定义3.4数据查询3.5数据更新3.6视图3.7小结,AnIntroductiontoDatabaseSystem,3.6视图,视图的特点虚表,是从一个或几个基本表(或视图)导出的表只存放视图的定义,不存放视图对应的数据基表中的数据发生变化,从视图中查询出的数据也随之改变,AnIntroductiontoDatabaseSystem,3.6视图,基于视图的操作查询删除受限更新定义基于该视图的新视图,AnIntroductiontoDatabaseSystem,3.6视图,3.6.1定义视图3.6.2查询视图3.6.3更新视图3.6.4视图的作用,AnIntroductiontoDatabaseSystem,3.6.1定义视图,建立视图删除视图,AnIntroductiontoDatabaseSystem,一、建立视图,语句格式CREATEVIEW(,)ASWITHCHECKOPTION;组成视图的属性列名:全部省略或全部指定子查询不允许含有ORDERBY子句和DISTINCT短语,AnIntroductiontoDatabaseSystem,建立视图(续),RDBMS执行CREATEVIEW语句时只是把视图定义存入数据字典,并不执行其中的SELECT语句。在对视图查询时,按视图的定义从基本表中将数据查出。,AnIntroductiontoDatabaseSystem,建立视图(续),例1建立信息系学生的视图。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept=IS;,AnIntroductiontoDatabaseSystem,建立视图(续),例2建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept=ISWITHCHECKOPTION;,AnIntroductiontoDatabaseSystem,建立视图(续),对IS_Student视图的更新操作:修改操作:自动加上Sdept=IS的条件删除操作:自动加上Sdept=IS的条件插入操作:自动检查Sdept属性值是否为IS如果不是,则拒绝该插入操作如果没有提供Sdept属性值,则自动定义Sdept为IS,AnIntroductiontoDatabaseSystem,建立视图(续),基于多个基表的视图例3建立信息系选修了1号课程的学生视图。,CREATEVIEWIS_S1(Sno,Sname,Grade)ASSELECTStudent.Sno,Sname,GradeFROMStudent,SCWHERESdept=ISANDStudent.Sno=SC.SnoANDSC.Cno=1;,AnIntroductiontoDatabaseSystem,建立视图(续),基于视图的视图例4建立信息系选修了1号课程且成绩在90分以上的学生的视图。,CREATEVIEWIS_S2ASSELECTSno,Sname,GradeFROMIS_S1WHEREGrade=90;,AnIntroductiontoDatabaseSystem,建立视图(续),带表达式的视图例5定义一个反映学生出生年份的视图。CREATEVIEWBT_S(Sno,Sname,Sbirth)ASSELECTSno,Sname,2000-SageFROMStudent;,AnIntroductiontoDatabaseSystem,建立视图(续),分组视图例6将学生的学号及他的平均成绩定义为一个视图假设SC表中“成绩”列Grade为数字型CREATVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;,AnIntroductiontoDatabaseSystem,建立视图(续),不指定属性列例7将Student表中所有女生记录定义为一个视图CREATEVIEWF_Student(F_Sno,name,sex,age,dept)ASSELECT*FROMStudentWHERESsex=女;缺点:修改基表Student的结构后,Student表与F_Student视图的映象关系被破坏,导致该视图不能正确工作。,AnIntroductiontoDatabaseSystem,二、删除视图,语句的格式:DROPVIEWCASCADE;该语句从数据字典中删除指定的视图定义如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除删除基表时,由该基表导出的所有视图定义都必须显式地使用DROPVIEW语句删除,AnIntroductiontoDatabaseSystem,删除视图(续),例8删除视图BT_S:DROPVIEWBT_S;删除视图IS_S1:DROPVIEWIS_S1;拒绝执行级联删除:DROPVIEWIS_S1CASCADE;,AnIntroductiontoDatabaseSystem,3.6视图,3.6.1定义视图3.6.2查询视图3.6.3更新视图3.6.4视图的作用,AnIntroductiontoDatabaseSystem,3.6.2查询视图,用户角度:查询视图与查询基本表相同RDBMS实现视图查询的方法视图消解法(ViewResolution)进行有效性检查转换成等价的对基本表的查询执行修正后的查询,AnIntroductiontoDatabaseSystem,查询视图(续),例9在信息系学生的视图中找出年龄小于20岁的学生。SELECTSno,SageFROMIS_StudentWHERESage=90GROUPBYSno;正确:SELECTSno,AVG(Grade)FROMSCGROUPBYSnoHAVINGAVG(Grade)=90;,AnIntroductiontoDatabaseSystem,3.6视图,3.6.1定义视图3.6.2查询视图3.6.3更新视图3.6.4视图的作用,AnIntroductiontoDatabaseSystem,更新视图(续),例12将信息系学生视图IS_Student中学号200215122的学生姓名改为“刘辰”。UPDATEIS_StudentSETSname=刘辰WHERESno=200215122;转换后的语句:UPDATEStudentSETSname=刘辰WHERESno=200215122ANDSdept=IS;,AnIntroductiontoDatabaseSystem,更新视图(续),例13向信息系学生视图IS_S中插入一个新的学生记录:200215129,赵新,20岁INSERTINTOIS_StudentVALUES(95029,赵新,20);转换为对基本表的更新:INSERTINTOStudent(Sno,Sname,Sage,Sdept)VALUES(200215129,赵新,20,IS);,AnIntroductiontoDatabaseSystem,更新视图(续),例14删除信息系学生视图IS_Stud

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论