2022年数据库原及其应用实验.pdf
《2022年数据库原及其应用实验.pdf》由会员分享,可在线阅读,更多相关《2022年数据库原及其应用实验.pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库原及其应用实验(作业 ) 实验 1、数据定义1.1 实验目的熟悉 SQL 的数据定义语言 ,能够熟练地使用 SQL语句来创建与更改基本表,创建与取消索引。1.2 实验内容用企业管理器创建数据库University_Mis 使用 CREATE 语句创建基本表。更改基本表的定义 : 增加列,删除列 ,修改列的数据类型。创建表的升、降序索引。删除基本表的约束、基本表的索引或基本表。1.3 实验步骤(1) 用企业管理器创建数据库University_Mis (2) 在查询分析器中用SQL 语句创建关系数据库基本表: 学生表 Students(Sno,Sname, Semail,Scredit,S
2、room); 教师表 Teachers(Tno,Tname,Temail,Tsalary); 课程表 Courses(Cno,Cname,Ccredit); 成绩表 Reports(Sno,Tno,Cno, Score); 其中:Sno、Tno、Cno分别就是表 Students 、表 Teachers 、表 Courses的主键 ,具有唯一性约束 ,Scredit具有约束“大于等于0”; Reports中的 Sno,Tno,Cno就是外键,它们共同组成 Reports的主键。(3) 更改表 Students:增加属性 Ssex(类型就是 CHAR, 长度为 2),取消 Scredit “大于
3、等于 0” 约束。 把表 Courses 中的属性 Cname 的数据类型改成长度为30。(4) 删除表 Students 的一个属性 Sroom。(5) 删除表 Reports。(6) 为 Courses 表创建按 Cno 降序排列的索引。(7) 为 Students表创建按 Sno升序排列的索引。(8) 创建表 Students的按 Sname升序排列的唯一性索引。(9) 删除 Students表 Sno 的升序索引。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 21 页 - - - -
4、 - - - - - - 数据库原及其应用实验(作业 ) 实验 2、SQL的数据查询2.1 实验目的熟悉 SQL 语句的数据查询语言 ,能够 SQL 语句对数据库进行单表查询、 连接查询、嵌套查询、集合查询与统计查询。2.2 实验内容实验内容主要就是对数据库进行查询操作,包括如下四类查询方式 : (1) 单表查询查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。使用 DISTINCT 保留字消除重复行。对查询结果排序与分组。集合分组使用集函数进行各项统计。(2) 连接查询笛卡儿连接与等值连接。自连接。外连接复合条件连接。多表连接。(3) 嵌套查询通过实验验证对子查询的两个限制条件。体
5、会相关子查询与不相关子查询的不同。考察四类谓词的用法 ,包括: 第一类 ,IN、NOT IN; 第二类 ,带有比较运算符的子查询 ; 第三类 ,SOME、ANY 或 ALL 谓词的子查询 ,查询最大值与最小值 ; 第四类 ,带有 EXISTS 谓词的子查询 ,实现“所有”等情况 (如王宏的“所有”课程 ,“所有”女生选修的课程) (4) 集合运算使用保留字 UNION 进行集合或运算。采用逻辑运算符 AND 或 OR 来实现集合交与减运算。2.3 实验步骤以 University_Mis 数据库为例 ,该数据库中有四张如实验1,其中 Score就是每门课的考试成绩,Scredit 就是学生所有
6、考试合格课程所获得的积分总数,Ccredit 每门课程的学分数。在数据库中 ,存在这样的联系 :学生可以选择课程 ,一个课程对应一个教师。 在表Reports中保存学生的选课记录与考试成绩。请先输入如下符合条件的元组后,再对数据库进行有关的查询操作: 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 21 页 - - - - - - - - - - 数据库原及其应用实验(作业 ) 图 1、1、Students 表图 1、2、Teachers表图 1、3、Courses 表图 1、4、Report
7、s 表(1) 查询性别为“男”的所有学生的名称并按学号升序排列。SELECTSnameFROM Students WHERE Ssex= 男 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 21 页 - - - - - - - - - - 数据库原及其应用实验(作业 ) ORDER BY SnoASC; (2) 查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。 积分的计算公式为 :1+(考试成绩 -60)*0、1*Ccredit 。考试成绩 =60 否则=0SELECTSno , Sco
8、re, Credits,( 1+( Score- 60 )* 0、1)* CreditsscoreFROM Reports, Courses WHERE Score= 60 (3) 查询学分就是 3 或 4 的课程的名称。SELECTCname FROM Courses WHERE Credits= 3 OR Credits= 4 ;(4) 查询所有课程名称中含有“算法”的课程编号。SELECTCno FROM Courses WHERE CnameLIKE% 算法 % ;(5) 查询所有选课记录的课程号(不重复显示 )。SELECTCno FROM Reports WHERE Score!=
9、 0 GROUP BY Cno(6) 统计所有老师的平均工资。SELECTAVG( Tsalary) FROM Teachers (7) 查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列。SELECTTno , AVG( Score) FROM Reports GROUP BY Tno ORDER BY AVG( Score)DESC (8) 统计各个课程的选课人数与平均成绩。SELECTCno , COUNT( Sno )number , AVG( Score) FROM Reports GROUP BY Cno (9) 查询至少选修了三门课程的学生编号与姓名。SELECT
10、Sno , Sname FROM Students WhereSnoIN ( SELECTSno FROM Reports GROUP BY Sno HAVINGCOUNT(*)=3 ) (10)查询编号 S26 的学生所选的全部课程的课程名与成绩。SELECTSno , Score, Cname 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 21 页 - - - - - - - - - - 数据库原及其应用实验(作业 ) FROM Reports, Courses WhereSnoLIKE
11、S26AND Courses、 Cno=Reports、Cno(11)查询所有选了“数据库原理及其应用”课程的学生编号与姓名。SELECTStudents、Sno , Sname FROM Courses, Students, Reports WhereCname LIKE 数据库原理与其应用%AND Courses、Cno = Reports、CnoAND Reports、Sno= Students、Sno(12)求出选择了同一个课程的学生对 。SELECTA、Cno , A、Sno , B、Sno FROM ReportsA ,ReportsB WhereA、Cno= B、CnoAND A
12、、Sno!=B、Sno ORDER BY Cno(13)求出至少被两名学生选修的课程编号。(14)查询选修了编号S26 的学生所选的某个课程的学生编号。(15)查询学生的基本信息及选修课程编号与成绩。(16)查询学号 S52的学生的姓名与选修的课程名称及成绩。(17)查询与学号 S52的学生同 性别 的所有学生资料。(18)查询所有选课的学生的详细信息。(19)查询没有学生选的课程的编号与名称。(20)查询选修了课程名为C+的学生学号与姓名。(21)找出选修课程 UML 或者课程 C+的学生学号与姓名。(22)找出与课程 UML 或课程 C+的学分一样课程名称。(23)查询所有选修编号C01
13、的课程的学生的姓名。(24)查询选修了所有课程的学生姓名。(25)利用集合 查询方式 ,查询选修课程C+或选择课程JAVA 的学生的编号、姓名与积分。(26)实现集合交运算 ,查询既选修课程C+又选修课程JAVA 的学生的编号、姓名与积分。(27)实现集合减运算 ,查询选修课程 C+而没有选修课程JAVA 的学生的编号。实验 3、数据更新3.1 实验目的熟悉数据库的数据更新操作,能够使用 SQL 语句对数据库进行数据的插入、更新、删除操作。3.2 实验内容在本实验中 ,主要内容就是如何用SQL 语句对数据进行更新。使用 INSERT INTO 语句插入数据 ,包括插入一个元组或将子查询的结果插
14、入到数据库中两种方式。使用 SELECT INTO 语句 ,产生一个新表并插入数据。使用 UPDATE 语句可以修改指定表中满足WHERE 子句条件的元组 ,有三种精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 21 页 - - - - - - - - - - 数据库原及其应用实验(作业 ) 修改的方式 :修改某一个元组的值;修改多个元组的值;带子查询地修改语句。使用 DELETE 语句删除数据 :删除某一个元组的值 ;删除多个元组的值 ;带子查询地删除语句。3.3 实验步骤在数据库 Univ
15、ersity_Mis 上按下列要求进行数据更新。(1) 使 用SQL 语 句 向Students 表 中 插 入 元 组 (Sno:S78; Sname: 李 迪 ; Semail:LDzjut 、edu、cn; Scredit:0;Ssex:男)。(2) 对每个课程 ,求学生的选课人数与学生的平均成绩,并把结果存入数据库。使用 SELECT INTO 与 INSERT INTO 两种方法实现。(3) 在 Students 表中使用 SQL 语句将姓名为李迪的学生的学号改为 S70。(4) 在 Teachers表中使用 SQL 语句将所有教师的工资加500 元。(5) 将姓名为 刘华的学生的课
16、程“数据库原理及其应用”的成绩加上6 分。(6) 在 Students表中使用 SQL 语句删除姓名为 李迪的学生信息。(7) 删除所有选修课程JAVA 的选修课记录。(8) 对 Courses 表做删去学分 =4 的元组操作 ,讨论该操作所受到的约束。实验 4、SQL的视图4.1 实验目的熟悉 SQL 支持的有关视图的操作 ,能够熟练使用SQL 语句来创建需要的视图 ,对视图进行查询与取消视图。4.2 实验内容(1) 定义常见的视图形式 ,包括: 行列子集视图WITH CHECK OPTION 的视图基于多个基表的视图基于视图的视图带表达式的视图分组视图(2) 通过实验考察 WITH CHE
17、CK OPTION 这一语句在视图定义后产生的影响,包括对修改操作、删除操作、插入操作的影响。(3) 讨论视图的数据更新情况 ,对子行列视图进行数据更新。(4) 使用 DROP 语句删除一个视图 ,由该视图导出的其她视图定义仍在数据字典中 ,但已不能使用 ,必须显式删除。同样的原因 ,删除基表时 ,由该基表导出的所有视图定义都必须显式删除。4.3 实验步骤(1) 创建一个行列子集视图CS_View,给出选课成绩合格的学生的编号、 教师编号、所选课程号与该课程成绩。(2) 创建基于多个基本表的视图SCT_View ,这个视图由学生姓名与她所选修的课程名及讲授该课程的教师姓名构成。精品资料 - -
18、 - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 21 页 - - - - - - - - - - 数据库原及其应用实验(作业 ) (3) 创建带表达式的视图EXP_View, 由学生姓名及所选课程名与所有课程成绩都比原来多 5 分这几个属性组成 。(4) 创建分组视图 Group_View, 将学生的学号及她的平均成绩定义为一个视图。(5) 创建一个基于视图的视图,基于 (1)中建立的视图 ,定义一个包括学生编号、学生所选课程数目与平均成绩的视图VV_View 。(6) 查询所有 选修课程“数据库原理及其应用
19、”的学生姓名。(7) 插入元组 (S52,T02,C02,59)到视图 CS_View 中。若就是在视图的定义中存在 WITH CHECK OPTION字句对插入操作由什么影响。(8) 将视图 CS_View(包括定义 WITH CHECK OPTION) 中,所有课程编号为 C01 的课程的成绩都减去5 分。这个操作数据库就是否会正确执行,为什么?如果加上5 分(原来 95 分以上的不变 )呢?(9) 在视图 CS_View(包括定义 WITH CHECK OPTION) 删除编号 S03学生的记录,会产生什么结果?(10)取消视图 SCT_View 与视图 CS_View 实验 5、数据控
20、制5、1 实验目的熟悉 SQL 的数据控制功能 ,能够使用 SQL 语句来向用户授予与收回权限。5、2 实验内容(1)使用 GRANT 语句来对用户授权 ,对单个用户或多个用户授权,或使用保留字 PUBLIC 对所有用户授权。对不同的操作对象包括数据库、视图、基本表等进行不同权限的授权。(2)使用 WITH GRANT OPTION 字句授予用户传播该权限的权利。(3)当在授权时发生循环授权 ,考察 DBS 能否发现这个错误。如果不能,结合取消权限操作 ,查瞧 DBS 对循环授权的控制。(4)使用 REVOKE 子句收回授权 ,取消授权的级联反应。5、3 实验步骤用企业管理器在数据库Unive
21、rsity_Mis 中建立三个用户USER1、USER2 与USER3,她们在数据库中的角色就是PUBLIC 。请按以下要求 ,分别以管理员身份或这三个用户的身份登陆到数据库中,进行操作 ,并记录操作结果。配置管理器服务第一个重新启动(1) 授予所有用户对表Courses 的查询权限。这就是以 windows 登录 SQL: GRANT SELECT ON Courses TO PUBLIC以 USER1 的身份登陆查询分析器,用 SQL 语言查询 Courses 与 Students表,查询结果如何?SELECT* FROM Courses 精品资料 - - - 欢迎下载 - - - - -
22、 - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 21 页 - - - - - - - - - - 数据库原及其应用实验(作业 ) 查询 Courses正常 , 查询表 Stuents出错 , 由于为将表Students的查询权限授予用户USER1、(2)授予用户 USER1 对表 Students插入与更新的权限 ,但不授予删除权限 ,并且授予用户 USER1 传播这两个权限的权利。GRANT SELECT,INSERT , UPDATE ON Students TO USER1 WITHGRANT OPTION (若不授予用户 USER1
23、SELECT 权限登录时将无法UPDATE) 以 USER?的身。 。 。INSERT INTOStudents VALUES( S05, 葛晓凡 , GXFzjut、 edu 、cn, 18 、6, 女 ) UPDATE Students SET Scredit= 19 、2 WHERE Sno=S05(3)允许用户 USER2 在表 Reports 中插入元组 ,更新 Score 列,可以查询除了Sno以外的所有列。GRANT INSERT , UPDATE( Score), SELECT ( Tno , Cno , Score) ON Reports TO USER2以 USER?的身。
24、 。 。INSERT INTOReports VALUES( S05, T02, C01, 85 ) UPDATEReports SETScore= 90 WHERE Tno= T01 SELECTTno , Cno , Score FROM Reports (4)用户 USER1 授予用户 USER2 对表 Students 插入与更新的权限 ,并且授予用户 USER2 传播插入操作的权利。GRANT SELECT,INSERT , UPDATE 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,
25、共 21 页 - - - - - - - - - - 数据库原及其应用实验(作业 ) ON Students TO USER2 (传播插入操作不会 ) 以 USER?的身。 。 。INSERT INTOStudents VALUES( S06, 陈慧 , CHzjut、edu 、cn, 19 、6, 女 ) UPDATEStudents SETScredit= 20 、1 WHERE Sno= S06 (5)收回对用户 USER1 对表 Courses查询权限的授权。REVOKE SELECT ON Courses FROM USER1以 USER?的身。 。 。明明收回权限为什么还可以查询?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 数据库 及其 应用 实验
限制150内