版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库应用基础第三章关系数据库标准语言SQL2022/11/171数据库应用基础数据库应用基础第三章关系数据库标准语言SQL2022/1第三章关系数据库标准语言(SQL)3.1SQL概述3.2数据定义3.3查询3.4数据更新3.5视图3.6数据控制3.7嵌入式SQL小结2022/11/172数据库应用基础第三章关系数据库标准语言(SQL)3.1SQL概述203.4数据更新3.4.1插入数据3.4.2修改数据3.4.3删除数据2022/11/173数据库应用基础3.4数据更新3.4.1插入数据2022/13.4.1插入数据两种插入数据方式插入单个元组插入子查询结果2022/11/174数据库应用基础3.4.1插入数据两种插入数据方式2022/11/1041.插入单个元组语句格式INSERTINTO<表名>[(<属性列1>[,<属性列2>…)]VALUES(<常量1>[,<常量2>]…)功能
将新元组插入指定表中。2022/11/175数据库应用基础1.插入单个元组语句格式2022/11/105数据库应用基插入单个元组(续)[例1]将一个新学生记录(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。
INSERTINTOStudentVALUES('200215128','陈冬','男','IS',18);2022/11/176数据库应用基础插入单个元组(续)[例1]将一个新学生记录2022/11插入单个元组(续)[例2]插入一条选课记录(200215128','1')。
INSERTINTOSC(Sno,Cno)VALUES('200215128','1');新插入的记录在Grade列上取空值2022/11/177数据库应用基础插入单个元组(续)[例2]插入一条选课记录(200215插入单个元组(续)
INTO子句指定要插入数据的表名及属性列属性列的顺序可与表定义中的顺序不一致没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致指定部分属性列:插入的元组在其余属性列上取空值
VALUES子句
提供的值必须与INTO子句匹配值的个数值的类型2022/11/178数据库应用基础插入单个元组(续)INTO子句2022/11/108数据库2.插入子查询结果语句格式
INSERTINTO
<表名>[(<属性列1>[,<属性列2>…)]
子查询;功能将子查询结果插入指定表中2022/11/179数据库应用基础2.插入子查询结果语句格式2022/11/109数据库应用插入子查询结果(续)[例3]对每一个系,求学生的平均年龄,并把结果存入数据库。第一步:建表
CREATETABLEDeptage(SdeptCHAR(15)/*系名*/AvgageSMALLINT);/*学生平均年龄*/2022/11/1710数据库应用基础插入子查询结果(续)[例3]对每一个系,求学生的平均年龄插入子查询结果(续)第二步:插入数据
INSERTINTODeptage(Sdept,Avgage)SELECTSdept,AVG(Sage)FROMStudentGROUPBYSdept;2022/11/1711数据库应用基础插入子查询结果(续)第二步:插入数据2022/11/1011插入子查询结果(续)INTO子句(与插入单条元组类似)指定要插入数据的表名及属性列属性列的顺序可与表定义中的顺序不一致没有指定属性列:表示要插入的是一条完整的元组指定部分属性列:插入的元组在其余属性列上取空值子查询SELECT子句目标列必须与INTO子句匹配值的个数值的类型2022/11/1712数据库应用基础插入子查询结果(续)INTO子句(与插入单条元组类似)202插入子查询结果(续)DBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则实体完整性参照完整性用户定义的完整性对于有NOTNULL约束的属性列是否提供了非空值对于有UNIQUE约束的属性列是否提供了非重复值对于有值域约束的属性列所提供的属性值是否在值域范围内2022/11/1713数据库应用基础插入子查询结果(续)DBMS在执行插入语句时会检查所插元组是3.4数据更新3.4.1插入数据3.4.2修改数据3.4.3删除数据2022/11/1714数据库应用基础3.4数据更新3.4.1插入数据2022/13.4.2修改数据语句格式
UPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>]…[WHERE<条件>];功能修改指定表中满足WHERE子句条件的元组2022/11/1715数据库应用基础3.4.2修改数据语句格式2022/11/1015数据库修改数据(续)三种修改方式修改某一个元组的值修改多个元组的值带子查询的修改语句2022/11/1716数据库应用基础修改数据(续)三种修改方式2022/11/1016数据库应用1.修改某一个元组的值[例4]将学生200215121的年龄改为22岁。
UPDATEStudentSETSage=22WHERESno=
'200215121';2022/11/1717数据库应用基础1.修改某一个元组的值2022/11/1017数据库应用基2.修改多个元组的值[例5]将所有学生的年龄增加1岁。
UPDATEStudentSETSage=Sage+1;Gz(sno,dept,Wage)比如所有基本工资涨15%2022/11/1718数据库应用基础2.修改多个元组的值2022/11/1018数据库应用基础修改多个元组的值(续)[例6]将信息系所有学生的年龄增加1岁。
UPDATEStudentSETSage=Sage+1WHERESdept='IS';2022/11/1719数据库应用基础修改多个元组的值(续)2022/11/1019数据库应用基础3.带子查询的修改语句[例7]将计算机科学系全体学生的成绩置零。UPDATESCSETGrade=0WHERE'CS'=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);2022/11/1720数据库应用基础3.带子查询的修改语句[例7]将计算机科学系全体学生的修改数据(续)DBMS在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则实体完整性主码不允许修改用户定义的完整性
NOTNULL约束
UNIQUE约束值域约束2022/11/1721数据库应用基础修改数据(续)DBMS在执行修改语句时会检查修改操作20223.4数据更新3.4.1插入数据3.4.2修改数据3.4.3删除数据
2022/11/1722数据库应用基础3.4数据更新3.4.1插入数据2022/13.4.3删除数据
DELETE
FROM<表名>[WHERE<条件>];功能删除指定表中满足WHERE子句条件的元组WHERE子句指定要删除的元组缺省表示要修改表中的所有元组2022/11/1723数据库应用基础3.4.3删除数据DELETE2022/1删除数据(续)三种删除方式删除某一个元组的值删除多个元组的值带子查询的删除语句2022/11/1724数据库应用基础删除数据(续)三种删除方式2022/11/1024数据库应用1.删除某一个元组的值[例8]删除学号为200215128的学生记录。
DELETEFROMStudentWHERESno='200215128';2022/11/1725数据库应用基础1.删除某一个元组的值[例8]删除学号为20021512.删除多个元组的值[例9]删除2号课程的所有选课记录。
DELETEFROMSC;
WHERECno='2';[例10]删除所有的学生选课记录。
DELETEFROMSC;2022/11/1726数据库应用基础2.删除多个元组的值[例9]删除2号课程的所有选课记录3.带子查询的删除语句[例11]删除计算机科学系所有学生的选课记录。DELETEFROMSCWHERE'CS'=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);2022/11/1727数据库应用基础3.带子查询的删除语句[例11]删除计算机科学系所有学删除数据(续)DBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则参照完整性不允许删除级联删除2022/11/1728数据库应用基础删除数据(续)DBMS在执行插入语句时会检查所插元组2022更新数据与数据一致性DBMS在执行插入、删除、更新语句时必须保证数据库一致性必须有事务的概念和原子性完整性检查和保证2022/11/1729数据库应用基础更新数据与数据一致性DBMS在执行插入、删除、更新语句时必须第三章关系数据库标准语言SQL3.1SQL概述3.2数据定义3.3查询3.4数据更新3.5视图3.6数据控制3.7嵌入式SQL小结2022/11/1730数据库应用基础第三章关系数据库标准语言SQL3.1SQL概述20223.5视图视图的特点虚表,是从一个或几个基本表(或视图)导出的表只存放视图的定义,不会出现数据冗余基表中的数据发生变化,从视图中查询出的数据也随之改变2022/11/1731数据库应用基础3.5视图视图的特点2022/11/1031数据3.5视图基于视图的操作查询删除受限更新定义基于该视图的新视图2022/11/1732数据库应用基础3.5视图基于视图的操作2022/11/10323.5视图3.5.1定义视图3.5.2查询视图3.5.3更新视图3.5.4视图的作用2022/11/1733数据库应用基础3.5视图3.5.1定义视图2022/11/1.建立视图语句格式
CREATEVIEW
<视图名>[(<列名>[,<列名>]…)]AS<子查询>[WITHCHECKOPTION];2022/11/1734数据库应用基础1.建立视图语句格式2022/11/1034数据库应用基础行列子集视图
[例1]建立信息系学生的视图。
CREATEVIEWIS_StudentAS
SELECTSno,Sname,SageFROMStudentWHERESdept='IS';从单个基本表导出只是去掉了基本表的某些行和某些列保留了码2022/11/1735数据库应用基础行列子集视图[例1]建立信息系学生的视图。2022/1
建立视图(续)WITHCHECKOPTION透过视图进行增删改操作时,不得破坏视图定义中的谓词条件(即子查询中的条件表达式)2022/11/1736数据库应用基础建立视图(续)WITHCHECKOPTION2022/
WITHCHECKOPTION的视图[例2]建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。
CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS'WITHCHECKOPTION;2022/11/1737数据库应用基础WITHCHECKOPTION的视图[例2]建立信对IS_Student视图的更新操作修改操作:DBMS自动加上Sdept='IS'的条件删除操作:DBMS自动加上Sdept='IS'的条件插入操作:DBMS自动检查Sdept属性值是否为'IS'如果不是,则拒绝该插入操作如果没有提供Sdept属性值,则自动定义Sdept为'IS'2022/11/1738数据库应用基础对IS_Student视图的更新操作修改操作:DBMS自动加基于多个基表的视图[例4]建立信息系选修了1号课程的学生视图。
CREATEVIEWIS_S1(Sno,Sname,Grade)ASSELECTStudent.Sno,Sname,GradeFROMStudent,SCWHERESdept='IS'ANDStudent.Sno=SC.SnoANDSC.Cno='1';2022/11/1739数据库应用基础基于多个基表的视图[例4]建立信息系选修了1号课程的学生基于视图的视图
[例5]建立信息系选修了1号课程且成绩在90分以上的学生的视图。
CREATEVIEWIS_S2ASSELECTSno,Sname,GradeFROMIS_S1WHEREGrade>=90;2022/11/1740数据库应用基础基于视图的视图 [例5]建立信息系选修了1号课程且成绩在带表达式的视图[例6]定义一个反映学生出生年份的视图。
CREATEVIEWBT_S(Sno,Sname,Sbirth)ASSELECTSno,Sname,2000-SageFROMStudent设置一些派生属性列,也称为虚拟列--Sbirth
带表达式的视图必须明确定义组成视图的各个属性列名2022/11/1741数据库应用基础带表达式的视图[例6]定义一个反映学生出生年份的视图。2
建立分组视图[例7]将学生的学号及他的平均成绩定义为一个视图
假设SC表中“成绩”列Grade为数字型
CREATVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;2022/11/1742数据库应用基础建立分组视图[例7]将学生的学号及他的平均成绩定义为一
建立视图(续)[例8]将Student表中所有女生记录定义为一个视图
CREATEVIEWF_Student1(stdnum,name,sex,age,dept)ASSELECT*FROMStudentWHERESsex='女';缺点:修改基表Student的结构后,Student表与F_Student1视图的映象关系被破坏,导致该视图不能正确工作。2022/11/1743数据库应用基础建立视图(续)[例8]将Student表中所有女生记录定义
建立视图(续)
CREATEVIEW
F_Student2(stdnum,name,sex,age,dept)ASSELECTSno,Sname,Ssex,Sage,Sdept
FROMStudentWHERESsex='女';为基表Student增加属性列不会破坏Student表与F_Student2视图的映象关系。2022/11/1744数据库应用基础建立视图(续)CREATEVIEW2022.删除视图DROPVIEW<视图名>;该语句从数据字典中删除指定的视图定义如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除删除基表时,由该基表导出的所有视图定义都必须显式地使用DROPVIEW语句删除2022/11/1745数据库应用基础2.删除视图DROPVIEW<视图名>;2022/删除视图(续)
[例9]删除视图IS_S1
DROPVIEWIS_S1;
2022/11/1746数据库应用基础删除视图(续) 2022/11/1046数据库应用基础3.5视图3.5.1定义视图3.5.2查询视图3.5.3更新视图3.5.4视图的作用2022/11/1747数据库应用基础3.5视图3.5.1定义视图2022/11/3.5.2查询视图从用户角度:查询视图与查询基本表相同DBMS实现视图查询的方法实体化视图(ViewMaterialization)有效性检查:检查所查询的视图是否存在执行视图定义,将视图临时实体化,生成临时表查询视图转换为查询临时表查询完毕删除被实体化的视图(临时表)new2022/11/1748数据库应用基础3.5.2查询视图从用户角度:查询视图与查询基本表相同n查询视图(续)视图消解法(ViewResolution)进行有效性检查,检查查询的表、视图等是否存在。如果存在,则从数据字典中取出视图的定义把视图定义中的子查询与用户的查询结合起来,转换成等价的对基本表的查询执行修正后的查询2022/11/1749数据库应用基础查询视图(续)视图消解法(ViewResolution)2查询视图(续)[例1]在信息系学生的视图中找出年龄小于20岁的学生。
SELECTSno,SageFROMIS_StudentWHERESage<20;IS_Student视图的定义(视图定义例1):
CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS‘;2022/11/1750数据库应用基础查询视图(续)[例1]在信息系学生的视图中找出年龄小于2查询视图(续)视图实体化法视图消解法转换后的查询语句为:SELECTSno,SageFROMStudentWHERESdept='IS'ANDSage<20;2022/11/1751数据库应用基础查询视图(续)视图实体化法2022/11/1051数据库应用查询视图(续)[例2]查询信息系选修了1号课程的学生SELECTSno,SnameFROMIS_Student,SCWHEREIS_Student.Sno=SC.SnoANDSC.Cno='1';2022/11/1752数据库应用基础查询视图(续)[例2]查询信息系选修了1号课程的学生20查询视图(续)视图消解法的局限有些情况下,视图消解法不能生成正确查询。采用视图消解法的DBMS会限制这类查询。
2022/11/1753数据库应用基础查询视图(续)视图消解法的局限2022/11/1053数据库查询视图(续)[例3]在S_G视图中查询平均成绩在90分以上的学生学号和平均成绩SELECT*FROMS_GWHEREGavg>=90;S_G视图定义:
CREATEVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;2022/11/1754数据库应用基础查询视图(续)[例3]在S_G视图中查询平均成绩在90分以上查询转换错误:SELECTSno,AVG(Grade)FROMSCWHEREAVG(Grade)>=90GROUPBYSno;正确:SELECTSno,AVG(Grade)FROMSCGROUPBYSnoHAVINGAVG(Grade)>=90;2022/11/1755数据库应用基础查询转换错误:2022/11/1055数据库应用基础3.5视图3.5.1定义视图3.5.2查询视图3.5.3更新视图3.5.4视图的作用2022/11/1756数据库应用基础3.5视图3.5.1定义视图2022/11/3.5.3更新视图用户角度:更新视图与更新基本表相同DBMS实现视图更新的方法视图实体化法(ViewMaterialization)视图消解法(ViewResolution)指定WITHCHECKOPTION子句后
DBMS在更新视图时会进行检查,防止用户通过视图对不属于视图范围内的基本表数据进行更新2022/11/1757数据库应用基础3.5.3更新视图用户角度:更新视图与更新基本表相同20更新视图(续)[例1]将信息系学生视图IS_Student中学号200215122
的学生姓名改为“刘辰”。UPDATEIS_StudentSETSname='刘辰'WHERESno=200215122';转换后的语句:UPDATEStudentSETSname='刘辰'WHERESno=200215122'ANDSdept='IS';2022/11/1758数据库应用基础更新视图(续)[例1]将信息系学生视图IS_Studen更新视图(续)[例2]向信息系学生视图IS_S中插入一个新的学生记录:95029,赵新,20岁INSERTINTOIS_StudentVALUES(‘95029’,‘赵新’,20);转换为对基本表的更新:INSERTINTOStudent(Sno,Sname,Sage,Sdept)VALUES('95029','赵新',20,'IS');2022/11/1759数据库应用基础更新视图(续)[例2]向信息系学生视图IS_S中插入一个更新视图(续)[例3]删除视图CS_S中学号为95029的记录DELETEFROMIS_StudentWHERESno='95029';转换为对基本表的更新:DELETEFROMStudentWHERESno='95029'ANDSdept='IS';2022/11/1760数据库应用基础更新视图(续)[例3]删除视图CS_S中学号为95029更新视图的限制一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新(对两类方法均如此)例:视图S_G为不可更新视图。
CREATEVIEWS_G(Sno,Gavg)AS SELECTSno,AVG(Grade) FROMSC GROUPBYSno;2022/11/1761数据库应用基础更新视图的限制一些视图是不可更新的,因为对这些视图的更新不能更新视图(续)对于如下更新语句:UPDATES_GSETGavg=90WHERESno='95001';无论实体化法还是消解法都无法将其转换成对基本表SC的更新2022/11/1762数据库应用基础更新视图(续)对于如下更新语句:2022/11/1062数据视图的可更新性理论上可更新理论上不可更新允许更新不允许更新不允许更新2022/11/1763数据库应用基础视图的可更新性理论上可更新理论上不可更新2022实际系统对视图更新的限制允许对行列子集视图进行更新对其他类型视图的更新不同系统有不同限制DB2对视图更新的限制:(1)若视图是由两个以上基本表导出的,则此视图不允许更新。(2)若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。2022/11/1764数据库应用基础实际系统对视图更新的限制允许对行列子集视图进行更新2022/更新视图(续)(3)若视图的字段来自集函数,则此视图不允许更新。(4)若视图定义中含有GROUPBY子句,则此视图不允许更新。(5)若视图定义中含有DISTINCT短语,则此视图不允许更新。(6)若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。(7)一个不允许更新的视图上定义的视图也不允许更新2022/11/1765数据库应用基础更新视图(续)(3)若视图的字段来自集函数,则此视图不允许3.5视图3.5.1定义视图3.5.2查询视图3.5.3更新视图3.5.4视图的作用2022/11/1766数据库应用基础3.5视图3.5.1定义视图2022/11/1.视图能够简化用户的操作2.视图使用户能以多种角度看待同一数据3.视图对重构数据库提供了一定程度的逻辑独立性4.视图能够对机密数据提供安全保护5.适当的利用视图可以更清晰的表达查询2022/11/1767数据库应用基础1.视图能够简化用户的操作2022/11/1067数据库应小结3.4数据更新
3.4.1插入数据
3.4.2修改数据
3.4.3删除数据2022/11/1768数据库应用基础小结3.4数据更新2022/11/1068数据库应用基础数据库应用基础第三章关系数据库标准语言SQL2022/11/1769数据库应用基础数据库应用基础第三章关系数据库标准语言SQL2022/1第三章关系数据库标准语言(SQL)3.1SQL概述3.2数据定义3.3查询3.4数据更新3.5视图3.6数据控制3.7嵌入式SQL小结2022/11/1770数据库应用基础第三章关系数据库标准语言(SQL)3.1SQL概述203.4数据更新3.4.1插入数据3.4.2修改数据3.4.3删除数据2022/11/1771数据库应用基础3.4数据更新3.4.1插入数据2022/13.4.1插入数据两种插入数据方式插入单个元组插入子查询结果2022/11/1772数据库应用基础3.4.1插入数据两种插入数据方式2022/11/1041.插入单个元组语句格式INSERTINTO<表名>[(<属性列1>[,<属性列2>…)]VALUES(<常量1>[,<常量2>]…)功能
将新元组插入指定表中。2022/11/1773数据库应用基础1.插入单个元组语句格式2022/11/105数据库应用基插入单个元组(续)[例1]将一个新学生记录(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。
INSERTINTOStudentVALUES('200215128','陈冬','男','IS',18);2022/11/1774数据库应用基础插入单个元组(续)[例1]将一个新学生记录2022/11插入单个元组(续)[例2]插入一条选课记录(200215128','1')。
INSERTINTOSC(Sno,Cno)VALUES('200215128','1');新插入的记录在Grade列上取空值2022/11/1775数据库应用基础插入单个元组(续)[例2]插入一条选课记录(200215插入单个元组(续)
INTO子句指定要插入数据的表名及属性列属性列的顺序可与表定义中的顺序不一致没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致指定部分属性列:插入的元组在其余属性列上取空值
VALUES子句
提供的值必须与INTO子句匹配值的个数值的类型2022/11/1776数据库应用基础插入单个元组(续)INTO子句2022/11/108数据库2.插入子查询结果语句格式
INSERTINTO
<表名>[(<属性列1>[,<属性列2>…)]
子查询;功能将子查询结果插入指定表中2022/11/1777数据库应用基础2.插入子查询结果语句格式2022/11/109数据库应用插入子查询结果(续)[例3]对每一个系,求学生的平均年龄,并把结果存入数据库。第一步:建表
CREATETABLEDeptage(SdeptCHAR(15)/*系名*/AvgageSMALLINT);/*学生平均年龄*/2022/11/1778数据库应用基础插入子查询结果(续)[例3]对每一个系,求学生的平均年龄插入子查询结果(续)第二步:插入数据
INSERTINTODeptage(Sdept,Avgage)SELECTSdept,AVG(Sage)FROMStudentGROUPBYSdept;2022/11/1779数据库应用基础插入子查询结果(续)第二步:插入数据2022/11/1011插入子查询结果(续)INTO子句(与插入单条元组类似)指定要插入数据的表名及属性列属性列的顺序可与表定义中的顺序不一致没有指定属性列:表示要插入的是一条完整的元组指定部分属性列:插入的元组在其余属性列上取空值子查询SELECT子句目标列必须与INTO子句匹配值的个数值的类型2022/11/1780数据库应用基础插入子查询结果(续)INTO子句(与插入单条元组类似)202插入子查询结果(续)DBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则实体完整性参照完整性用户定义的完整性对于有NOTNULL约束的属性列是否提供了非空值对于有UNIQUE约束的属性列是否提供了非重复值对于有值域约束的属性列所提供的属性值是否在值域范围内2022/11/1781数据库应用基础插入子查询结果(续)DBMS在执行插入语句时会检查所插元组是3.4数据更新3.4.1插入数据3.4.2修改数据3.4.3删除数据2022/11/1782数据库应用基础3.4数据更新3.4.1插入数据2022/13.4.2修改数据语句格式
UPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>]…[WHERE<条件>];功能修改指定表中满足WHERE子句条件的元组2022/11/1783数据库应用基础3.4.2修改数据语句格式2022/11/1015数据库修改数据(续)三种修改方式修改某一个元组的值修改多个元组的值带子查询的修改语句2022/11/1784数据库应用基础修改数据(续)三种修改方式2022/11/1016数据库应用1.修改某一个元组的值[例4]将学生200215121的年龄改为22岁。
UPDATEStudentSETSage=22WHERESno=
'200215121';2022/11/1785数据库应用基础1.修改某一个元组的值2022/11/1017数据库应用基2.修改多个元组的值[例5]将所有学生的年龄增加1岁。
UPDATEStudentSETSage=Sage+1;Gz(sno,dept,Wage)比如所有基本工资涨15%2022/11/1786数据库应用基础2.修改多个元组的值2022/11/1018数据库应用基础修改多个元组的值(续)[例6]将信息系所有学生的年龄增加1岁。
UPDATEStudentSETSage=Sage+1WHERESdept='IS';2022/11/1787数据库应用基础修改多个元组的值(续)2022/11/1019数据库应用基础3.带子查询的修改语句[例7]将计算机科学系全体学生的成绩置零。UPDATESCSETGrade=0WHERE'CS'=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);2022/11/1788数据库应用基础3.带子查询的修改语句[例7]将计算机科学系全体学生的修改数据(续)DBMS在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则实体完整性主码不允许修改用户定义的完整性
NOTNULL约束
UNIQUE约束值域约束2022/11/1789数据库应用基础修改数据(续)DBMS在执行修改语句时会检查修改操作20223.4数据更新3.4.1插入数据3.4.2修改数据3.4.3删除数据
2022/11/1790数据库应用基础3.4数据更新3.4.1插入数据2022/13.4.3删除数据
DELETE
FROM<表名>[WHERE<条件>];功能删除指定表中满足WHERE子句条件的元组WHERE子句指定要删除的元组缺省表示要修改表中的所有元组2022/11/1791数据库应用基础3.4.3删除数据DELETE2022/1删除数据(续)三种删除方式删除某一个元组的值删除多个元组的值带子查询的删除语句2022/11/1792数据库应用基础删除数据(续)三种删除方式2022/11/1024数据库应用1.删除某一个元组的值[例8]删除学号为200215128的学生记录。
DELETEFROMStudentWHERESno='200215128';2022/11/1793数据库应用基础1.删除某一个元组的值[例8]删除学号为20021512.删除多个元组的值[例9]删除2号课程的所有选课记录。
DELETEFROMSC;
WHERECno='2';[例10]删除所有的学生选课记录。
DELETEFROMSC;2022/11/1794数据库应用基础2.删除多个元组的值[例9]删除2号课程的所有选课记录3.带子查询的删除语句[例11]删除计算机科学系所有学生的选课记录。DELETEFROMSCWHERE'CS'=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);2022/11/1795数据库应用基础3.带子查询的删除语句[例11]删除计算机科学系所有学删除数据(续)DBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则参照完整性不允许删除级联删除2022/11/1796数据库应用基础删除数据(续)DBMS在执行插入语句时会检查所插元组2022更新数据与数据一致性DBMS在执行插入、删除、更新语句时必须保证数据库一致性必须有事务的概念和原子性完整性检查和保证2022/11/1797数据库应用基础更新数据与数据一致性DBMS在执行插入、删除、更新语句时必须第三章关系数据库标准语言SQL3.1SQL概述3.2数据定义3.3查询3.4数据更新3.5视图3.6数据控制3.7嵌入式SQL小结2022/11/1798数据库应用基础第三章关系数据库标准语言SQL3.1SQL概述20223.5视图视图的特点虚表,是从一个或几个基本表(或视图)导出的表只存放视图的定义,不会出现数据冗余基表中的数据发生变化,从视图中查询出的数据也随之改变2022/11/1799数据库应用基础3.5视图视图的特点2022/11/1031数据3.5视图基于视图的操作查询删除受限更新定义基于该视图的新视图2022/11/17100数据库应用基础3.5视图基于视图的操作2022/11/10323.5视图3.5.1定义视图3.5.2查询视图3.5.3更新视图3.5.4视图的作用2022/11/17101数据库应用基础3.5视图3.5.1定义视图2022/11/1.建立视图语句格式
CREATEVIEW
<视图名>[(<列名>[,<列名>]…)]AS<子查询>[WITHCHECKOPTION];2022/11/17102数据库应用基础1.建立视图语句格式2022/11/1034数据库应用基础行列子集视图
[例1]建立信息系学生的视图。
CREATEVIEWIS_StudentAS
SELECTSno,Sname,SageFROMStudentWHERESdept='IS';从单个基本表导出只是去掉了基本表的某些行和某些列保留了码2022/11/17103数据库应用基础行列子集视图[例1]建立信息系学生的视图。2022/1
建立视图(续)WITHCHECKOPTION透过视图进行增删改操作时,不得破坏视图定义中的谓词条件(即子查询中的条件表达式)2022/11/17104数据库应用基础建立视图(续)WITHCHECKOPTION2022/
WITHCHECKOPTION的视图[例2]建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。
CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS'WITHCHECKOPTION;2022/11/17105数据库应用基础WITHCHECKOPTION的视图[例2]建立信对IS_Student视图的更新操作修改操作:DBMS自动加上Sdept='IS'的条件删除操作:DBMS自动加上Sdept='IS'的条件插入操作:DBMS自动检查Sdept属性值是否为'IS'如果不是,则拒绝该插入操作如果没有提供Sdept属性值,则自动定义Sdept为'IS'2022/11/17106数据库应用基础对IS_Student视图的更新操作修改操作:DBMS自动加基于多个基表的视图[例4]建立信息系选修了1号课程的学生视图。
CREATEVIEWIS_S1(Sno,Sname,Grade)ASSELECTStudent.Sno,Sname,GradeFROMStudent,SCWHERESdept='IS'ANDStudent.Sno=SC.SnoANDSC.Cno='1';2022/11/17107数据库应用基础基于多个基表的视图[例4]建立信息系选修了1号课程的学生基于视图的视图
[例5]建立信息系选修了1号课程且成绩在90分以上的学生的视图。
CREATEVIEWIS_S2ASSELECTSno,Sname,GradeFROMIS_S1WHEREGrade>=90;2022/11/17108数据库应用基础基于视图的视图 [例5]建立信息系选修了1号课程且成绩在带表达式的视图[例6]定义一个反映学生出生年份的视图。
CREATEVIEWBT_S(Sno,Sname,Sbirth)ASSELECTSno,Sname,2000-SageFROMStudent设置一些派生属性列,也称为虚拟列--Sbirth
带表达式的视图必须明确定义组成视图的各个属性列名2022/11/17109数据库应用基础带表达式的视图[例6]定义一个反映学生出生年份的视图。2
建立分组视图[例7]将学生的学号及他的平均成绩定义为一个视图
假设SC表中“成绩”列Grade为数字型
CREATVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;2022/11/17110数据库应用基础建立分组视图[例7]将学生的学号及他的平均成绩定义为一
建立视图(续)[例8]将Student表中所有女生记录定义为一个视图
CREATEVIEWF_Student1(stdnum,name,sex,age,dept)ASSELECT*FROMStudentWHERESsex='女';缺点:修改基表Student的结构后,Student表与F_Student1视图的映象关系被破坏,导致该视图不能正确工作。2022/11/17111数据库应用基础建立视图(续)[例8]将Student表中所有女生记录定义
建立视图(续)
CREATEVIEW
F_Student2(stdnum,name,sex,age,dept)ASSELECTSno,Sname,Ssex,Sage,Sdept
FROMStudentWHERESsex='女';为基表Student增加属性列不会破坏Student表与F_Student2视图的映象关系。2022/11/17112数据库应用基础建立视图(续)CREATEVIEW2022.删除视图DROPVIEW<视图名>;该语句从数据字典中删除指定的视图定义如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除删除基表时,由该基表导出的所有视图定义都必须显式地使用DROPVIEW语句删除2022/11/17113数据库应用基础2.删除视图DROPVIEW<视图名>;2022/删除视图(续)
[例9]删除视图IS_S1
DROPVIEWIS_S1;
2022/11/17114数据库应用基础删除视图(续) 2022/11/1046数据库应用基础3.5视图3.5.1定义视图3.5.2查询视图3.5.3更新视图3.5.4视图的作用2022/11/17115数据库应用基础3.5视图3.5.1定义视图2022/11/3.5.2查询视图从用户角度:查询视图与查询基本表相同DBMS实现视图查询的方法实体化视图(ViewMaterialization)有效性检查:检查所查询的视图是否存在执行视图定义,将视图临时实体化,生成临时表查询视图转换为查询临时表查询完毕删除被实体化的视图(临时表)new2022/11/17116数据库应用基础3.5.2查询视图从用户角度:查询视图与查询基本表相同n查询视图(续)视图消解法(ViewResolution)进行有效性检查,检查查询的表、视图等是否存在。如果存在,则从数据字典中取出视图的定义把视图定义中的子查询与用户的查询结合起来,转换成等价的对基本表的查询执行修正后的查询2022/11/17117数据库应用基础查询视图(续)视图消解法(ViewResolution)2查询视图(续)[例1]在信息系学生的视图中找出年龄小于20岁的学生。
SELECTSno,SageFROMIS_StudentWHERESage<20;IS_Student视图的定义(视图定义例1):
CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS‘;2022/11/17118数据库应用基础查询视图(续)[例1]在信息系学生的视图中找出年龄小于2查询视图(续)视图实体化法视图消解法转换后的查询语句为:SELECTSno,SageFROMStudentWHERESdept='IS'ANDSage<20;2022/11/17119数据库应用基础查询视图(续)视图实体化法2022/11/1051数据库应用查询视图(续)[例2]查询信息系选修了1号课程的学生SELECTSno,SnameFROMIS_Student,SCWHEREIS_Student.Sno=SC.SnoANDSC.Cno='1';2022/11/17120数据库应用基础查询视图(续)[例2]查询信息系选修了1号课程的学生20查询视图(续)视图消解法的局限有些情况下,视图消解法不能生成正确查询。采用视图消解法的DBMS会限制这类查询。
2022/11/17121数据库应用基础查询视图(续)视图消解法的局限2022/11/1053数据库查询视图(续)[例3]在S_G视图中查询平均成绩在90分以上的学生学号和平均成绩SELECT*FROMS_GWHEREGavg>=90;S_G视图定义:
CREATEVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;2022/11/17122数据库应用基础查询视图(续)[例3]在S_G视图中查询平均成绩在90分以上查询转换错误:SELECTSno,AVG(Grade)FROMSCWHEREAVG(Grade)>=90GROUPBYSno;正确:SELECTSno,AVG(Grade)FRO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年涪陵区九龙坡区法检系统书记员招聘笔试模拟试题及答案详解
- 2026年宁波市慈溪市浒山街道慈澜实验幼儿园教职工招聘3人笔试备考题库及答案详解
- 2026年安顺市西秀区街道办人员招聘考试备考试题及答案详解
- 2026年包头市白云矿区中小学教师招聘考试参考试题及答案详解
- 2026年抚顺市新抚区中小学教师招聘笔试备考试题及答案详解
- 2026年石家庄市桥西区中小学教师招聘考试模拟试题及答案详解
- 马山县2027届六年级数学第一学期期末综合测试试题含解析
- 2026年常州市戚墅堰区街道办人员招聘笔试备考题库及答案详解
- 崇州市2027届三上数学期末学业质量监测试题含解析
- 2025年遵义市红花岗区中小学教师招聘考试试题及答案详解
- 2026湖北恩施州利川市选调市外教师30人笔试题库及参考答案详解【模拟题】
- 2026年西藏自治区拉萨市辅警协警招聘笔试备考题库及答案详解
- 2026年中央安全生产考核巡查组问题通报(2026年更新)
- 2025年党史党建知识测试题库100题(含标准答案)
- 合同服务终止协议书范本
- 蔬菜大棚现场管理制度
- 剧毒化学品、放射源存放场所治安防范要求内容
- 钻探安全技术操作规程(2020新版)
- 《事业单位财务规则》专题培训
- 气管插管患者急救与护理
- 海南省海上搜救应急预案
评论
0/150
提交评论