当前位置:首页 > 实验1,数据定义
实验3、数据更新
3.1 实验目的
熟悉数据库的数据更新操作,能够使用SQL语句对数据库进行数据的插入、更新、删除操作。
3.2 实验内容
? 在本实验中,主要内容是如何用SQL语句对数据进行更新。 ? 使用INSERT INTO语句插入数据,包括插入一个元组或将子查询的结果插
入到数据库中两种方式。
? 使用SELECT INTO语句,产生一个新表并插入数据。
? 使用UPDATE语句可以修改指定表中满足WHERE子句条件的元组,有三
种修改的方式:修改某一个元组的值;修改多个元组的值;带子查询地修改语句。
? 使用DELETE语句删除数据:删除某一个元组的值;删除多个元组的值;
带子查询地删除语句。 3.3 实验步骤
在数据库University_Mis上按下列要求进行数据更新。
(1) 使用SQL语句向Students表中插入元组(Sno:S78; Sname:李迪; Semail:LD@zjut.edu.cn; Scredit:0;Ssex:男)。
(2) 对每个课程,求学生的选课人数和学生的平均成绩,并把结果存入数据库。使用SELECT INTO 和INSERT INTO 两种方法实现。
(3) 在Students表中使用SQL语句将姓名为李迪的学生的学号改为S70。 (4) 在Teachers表中使用SQL语句将所有教师的工资加500元。
(5) 将姓名为刘华的学生的课程“数据库原理及其应用”的成绩加上6分。 (6) 在Students表中使用SQL语句删除姓名为李迪的学生信息。 (7) 删除所有选修课程JAVA的选修课记录。
(8) 对Courses表做删去学分<=4的元组操作,讨论该操作所受到的约束。
5
实验4、SQL的视图
4.1 实验目的
熟悉SQL支持的有关视图的操作,能够熟练使用SQL语句来创建需要的视图,对视图进行查询和取消视图。 4.2 实验内容
(1) 定义常见的视图形式,包括:
? 行列子集视图
? WITH CHECK OPTION的视图 ? 基于多个基表的视图 ? 基于视图的视图 ? 带表达式的视图 ? 分组视图
(2) 通过实验考察WITH CHECK OPTION这一语句在视图定义后产生的影
响,包括对修改操作、删除操作、插入操作的影响。 (3) 讨论视图的数据更新情况,对子行列视图进行数据更新。 (4) 使用DROP语句删除一个视图,由该视图导出的其他视图定义仍在数据
字典中,但已不能使用,必须显式删除。同样的原因,删除基表时,由该基表导出的所有视图定义都必须显式删除。 4.3 实验步骤
(1) 创建一个行列子集视图CS_View,给出选课成绩合格的学生的编号、教
师编号、所选课程号和该课程成绩。
(2) 创建基于多个基本表的视图SCT_View,这个视图由学生姓名和他所选
修的课程名及讲授该课程的教师姓名构成。
(3) 创建带表达式的视图EXP_View,由学生姓名及所选课程名和所有课程
成绩都比原来多5分这几个属性组成。
(4) 创建分组视图Group_View,将学生的学号及他的平均成绩定义为一个
视图。
(5) 创建一个基于视图的视图,基于(1)中建立的视图,定义一个包括学
生编号、学生所选课程数目和平均成绩的视图VV_View。 (6) 查询所有选修课程“数据库原理及其应用”的学生姓名。
(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
6
实验5、数据控制
5.1 实验目的
熟悉SQL的数据控制功能,能够使用SQL语句来向用户授予和收回权限。 5.2 实验内容
(1) 使用GRANT语句来对用户授权,对单个用户或多个用户授权,或使用保留字PUBLIC对所有用户授权。对不同的操作对象包括数据库、视图、基本表等进行不同权限的授权。
(2) 使用WITH GRANT OPTION字句授予用户传播该权限的权利。
(3) 当在授权时发生循环授权,考察DBS能否发现这个错误。如果不能,结合取消权限操作,查看DBS对循环授权的控制。 (4) 使用REVOKE子句收回授权,取消授权的级联反应。 5.3 实验步骤
用企业管理器在数据库University_Mis中建立三个用户USER1、USER2和USER3,他们在数据库中的角色是PUBLIC。请按以下要求,分别以管理员身份或这三个用户的身份登陆到数据库中,进行操作,并记录操作结果。
(1) 授予所有用户对表Courses的查询权限。以USER1的身份登陆查询分析器,用SQL语言查询Courses和Students表,查询结果如何?
(2) 授予用户USER1对表Students插入和更新的权限,但不授予删除权限,并且授予用户USER1传播这两个权限的权利。以USER?的身。。。 (3) 允许用户USER2在表Reports中插入元组,更新Score列,可以查询除了Sno以外的所有列。以USER?的身。。。
(4) 用户USER1授予用户USER2对表Students插入和更新的权限,并且授予用户USER2传播插入操作的权利。以USER?的身。。。
(5) 收回对用户USER1对表Courses查询权限的授权。以USER?的身。。。 (6) 由上面(2)和(4)的授权,再由用户USER2对用户USER3授予表Students插入和更新的权限,并且授予用户USER3传播插入操作的权力。这时候,如果由USER3对USER1授予表Students的插入和更新权限是否能得到成功?如果能够成功,那么如果有用户USER2取消USER3的权限,对USER1会有什么影响?如果再由DBA取消USER1的权限,对USER2有什么影响?
7
实验6、SQL的空值和空集处理
6.1 实验目的
认识NULL值在数据库中的特殊含义,了解空值和空集对于数据库的数据查询操作,特别是空值在条件表达式中与其他的算术运算符或者逻辑运算符的运算中,空集作为嵌套查询的子查询的返回结果时候的特殊性,能够熟练使用SQL语句来进行与空值,空集相关的操作。
6.2 实验内容
通过实验验证在原理解析中分析过的SQL Server对NULL的处理,包括: ? 在查询的目标表达式中包含空值的运算。 ? 在查询条件中空值与比较运算符的运算结果。
? 使用IS NULL或IS NOT NULL 来判断元组该列是否为空值。 ? 对存在取空值的列按值进行ORDER BY排序。
? 使用保留字DISTINCT对空值的处理,区分数据库的多中取值与现实中的
多种取值的不同。
? 使用 GROUP BY对存在取空值的属性值进行分组。
? 结合分组考察空值对各个集合函数的影响,特别注意对COUNT(*)和
COUNT(列名)的不同影响。
? 考察结果集是空集时,各个集函数的处理情况。
? 验证嵌套查询中返回空集的情况下与各个谓词的运算结果。 ? 进行与空值有关的等值连接运算。 6.3 实验步骤
(1) 查询所有选课记录的成绩并将它换算为五分制(满分为5分,合格为3分),
注意,创建表时允许Score取NULL值。
(2) 通过查询选修编号C07的课程的学生的人数,其中成绩合格的学生人数,
不合格的人数,讨论NULL值的特殊含义。
(3) 通过实验检验在使用ORDER BY进行排序时,取NULL的项是否出现在
结果中?如果有,在什么位置?
(4) 在上面的查询的过程中如果加上保留字DISTINCT会有什么效果呢? (5) 通过实验说明使用分组GROUP BY对取值为NULL的项的处理。
(6) 结合分组,使用集合函数求每个同学的平均分、总的选课记录、最高成绩、
最低成绩和总成绩。
(7) 查询成绩小于0的选课记录,统计总数、平均分、最大值和最小值。 (8) 采用嵌套查询的方式,利用比较运算符和谓词ALL的结合来查询表Courses
中最少的学分。假设数据库中只有一个记录的时候,使用前面的方法会得到什么结果,为什么?
(9) 创建一个学生表S(No,Sno,Sname),教师表T(No,Tno,Tname)
作为实验用的表。其中,No分别是这两个表的主键,其他键允许为空。 (10) 向S插入元组(n1,S01,李迪)、(n2,S02,李岚)、(n3,S05,NULL)、
(n4,S04,关红);
8
共分享92篇相关文档