- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
练习题 例:数据库中有三个关系 S(S#,SNAME,AGE,SEX) C(C#,CNAME,TEACHER) SC(S#,C#,GRADE) 请用ALPHA语言、QBE语言完成如下操作 检索学习课程号为C2的学生学号与成绩 检索学习课程号为C2的学生学号与姓名 检索选修课程名为Maths的学生学号与姓名 检索选修课程号为C2或C4的学生学号 检索至少选修课程号C2和C4的学生学号 检索不学C2课的学生姓名与年龄 * * * 不过,除并不经常使用,所以,数据库系统并没有将其作为一个操作符来实现。 * * * 在关系演算的查询操作时,可以在相应的关系上定义元组变量。 * 示例元素是所给域中可能的一个值,而不必是查询结果中的元素。比如用作示例的学生姓名,可以不是学生表中的学生,只要给出任意一个学生名即可。比如要求显示所有学生,只要给出任意一个学生名即可,而不必真是student表中的某个学生名 8)使用聚集函数 用户在使用查询语言时,经常要作一些简单的运算。 例如要统计某个关系中符合某一条件的元组数,或某些元组在某个属性上分量的和、平均值等等。 在关系数据库语言中提供了有关这类运算的标准函数,增强了基本检索能力。 常用的库函数右表所示: 函数名称 功能 AVG 按列计算平均值 TOTAL 按列计算值的总和 MAX 求一列中的最大值 MIN 求一列中的最小值 COUNT 按列值计算元组个数 例1:求学号为S1学生的平均分。 GET W (AVG(SC.SCORE):S.SNO=’S1’ 例2:求学校共有多少个系 GET W (COUNT(Student.Sdept)) 例3:求学生的最大年龄 GET W (max(Student.Sage)) COUNT函数自动消去重复行,可计算字段“DEPT“不同值的数目。 数据更新 更新操作包括修改、插入和删除。 1)修改操作 修改操作使用UPDATE语句实现,具体操作分为以下三步: ①读数据:使用HOLD语句将要修改的元组从数据库中读到工作空间中; ②修改:利用宿主语言修改工作空间中元组的属性; ③送回:使用UPDATE语句将修改后的元组送回数据库中。 这里HOLD语句是带上并发控制的GET语句。 例1:把刘伟同学转到信息(IS)系。 HOLD W(Student.Sname ,Student.Sdept):Student.Sname=‘刘伟’ MOVE ’IS’ TO W.DEPT UPDATE W 在ALPHA语言中,不允许修改关系的主码,例如不能使用UPDATE语句修改学生表中的学生学号。 如果要修改主码,应该先使用删除操作删除该元组,再插入一条具有新主码值的元组。 2)插入操作 插入操作使用PUT语句实现,具体操作分为以下两步: ①建立新元组:利用宿主语言在工作空间中建立新元组; ②写数据:使用PUT语句将元组写入到指定的关系中。 例1:在SC表中插入一条选课记录(S6,C1,85)。 MOVE ‘S6’ TO SC.SNO MOVE ‘C1’ TO SC.CNO MOVE 85 TO SC.Grade PUT W(SC) PUT语句的作用是把工作空间W中的数据写到数据库中,此例即把已经在工作空间建立的一条选课记录写入到选课关系SC中。 注意:PUT语句只能对一个关系进行操作,在插入操作时,拒绝接受主码相同的元组。 例2: 学校新开设了一门2学分的课程“计算机组织与结构”,其课程号为8,直接先行课为6号课程。插入该课程元组 MOVE 8 TO W.Cno MOVE 计算机组织与结构 TO W.Cname MOVE 6 TO W.Cpno MOVE 2 TO W.Ccredit PUT W (Course) 3)删除操作 ALPHA语言中的删除操作不但可以删除关系中的一些元组,还可以删除一个关系。 删除操作使用DELETE语句实现,具体操作分为以下两步: ①读数据:使用HOLD语句将要删除的元组从数据库中读到工作空间中; ②删除:使用DELETE语句删除该元组。 例1: 删除学号为S6的学生的信息 HOLD W(Student): Student.Sno=‘S6’ DELETE W 例2:删除全部学生的信息 HOLD W(Student) DELETE W 为保证参照完整性,删除Student中元组时相应地要删除SC中的元组 HOLD W (SC) DELETE W 例3:将学号200215121改为200215126 HOLD W (Student): Stu
文档评论(0)