数据库实验(四)视图 您所在的位置:网站首页 数据库查询所有男生基本信息 数据库实验(四)视图

数据库实验(四)视图

2024-07-01 15:16| 来源: 网络整理| 查看: 265

数据库实验(四)视图

一、 实验目的 熟悉SQL语言有关视图的操作,能够熟练使用SQL语句来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理。

二、 实验内容和要求 在实验一所创建的学生数据库中, 1 写出创建满足下述要求的视图的SQL语句,并执行所写代码。 (1)包含学生的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图。

create VIEW Student1(学号,姓名,所在系,年龄,课程号,课程名,课程学分) AS select Student.Sno, Sname,Sdept, Sage,SC.Cno, Cname, Credit from Student, Course,SC where Student.Sno = SC.Sno AND SC.Cno = Course.Cno with check option ;

(2)包含学生的学号、姓名、选修的课程名和考试成绩的视图。

create VIEW Student2(学号,姓名,选修课程名,考试成绩) AS select Student.Sno, Sname,Cname, Grade from Student, Course,SC where Student.Sno = SC.Sno AND SC.Cno = Course.Cno with check option ;

(3)统计每个学生的选课门数,要求列出学生学号和选课门数的视图。

create VIEW Student3 (学号,选课门数) AS select Sno, COUNT(Cno) from SC group by Sno with check option ;

(4)统计每个学生的修课总学分,要求列出学生学号和总学分的视图(说明:考试成绩大于等于60才可获得此门课程的学分)。

create VIEW Student4(学号,总学分) AS select Sno, SUM(Credit) from SC, Course where SC.Cno = Course.Cno AND Grade >= 60 group by Sno with check option ;

2 利用第1题建立的视图,完成如下查询。 (1)查询考试成绩大于等于90分的学生的姓名、课程名和成绩。

select 姓名, 选修课程名,考试成绩 from Student2 where 考试成绩 >= 90 ;

(2)查询选课门数超过3门的学生的学号和选课门数。

select 学号, 选课门数 from Student3 where 选课门数 > 3 ;

(3)查询计算机系选课门数超过3门的学生的姓名和选课门数。

select Student3.学号, 选课门数 from Student3, Student1 where Student3.学号 = Student1.学号 AND 选课门数 > 3 AND 所在系 = '计算机系' ;

(4)查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。

select Student4.学号,姓名,所在系,总学分 from Student1 , Student4 where Student1.学号 = Student4.学号 AND 总学分 > 10 ;

(5)查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。

select 姓名,年龄,所在系,总学分 from Student1 , Student4 where Student1.学号 = Student4.学号 AND 总学分 > 10 AND 年龄 >= 20 ;

3.使用WITH CHECK OPTION,在第1题建立的视图(1)的基础上,再创建一个“计算机系”同学的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图。 (1)增加一条记录, 0841101 张新 计算机系 20 C001 高等数学 4 (2)修改这条记录为 0841101 张新 物理系 20 C001 高等数学 4 以上两个操作是否能够实现?为什么?可以实现的,写出SQL语句。

create VIEW computer(学号,姓名,所在系,年龄,课程号,课程名,课程学分) AS select 学号,姓名,所在系,年龄,课程号,课程名,课程学分 from Student1 where 所在系 = '计算机系' with check option ;

不能实现,视图或函数’computer’ 不可更新,因为修改会影响多个基表。如果computer视图是独立的,使用with check option则第一条语句可以正常插入,第二条语句不可以,因为不是计算机系,不允许插入。

insert into computer values('0841101','张新','计算机系',20, 'C001', '高等数学', 4) ; insert into computer values('0841101','张新','物理系',20, 'C001', '高等数学', 4) ;

4.以下操作能否实现,如果能实现,给出相应的SQL语句,否则,解释不能实现的原因。 (1)对Student表,创建一个只包含男生信息的视图。对此视图执行将“李勇”的年龄更新为22岁。

create VIEW BoyInformation(学号,姓名,年龄,所在系) AS select Sno, Sname, Sage, Sdept from Student where Ssex = '男' ; update BoyInformation set 年龄 = 22 where 姓名 = '李勇' ;

(2)在上题创建的视图中。删除“刘晨”同学的记录。

delete from BoyInformation where 姓名 = '刘晨' ;

(3)第3题建立的“计算机系”同学的视图,对此视图执行将“李勇”的年龄更新为22岁。

update computer set 年龄 = 22 where 姓名 = '李勇' ;

(4)第3题建立的“计算机系”同学的视图,对此视图执行删除“刘晨”同学的记录。

delete from computer where 姓名 = '刘晨' ;

视图或函数’computer’ 不可更新,因为修改会影响多个基表。

上述诸题,如果能够实现,请给出SQL语句,并对结果截图,如果不能实现,说明原因。 视图设计器的使用:

打开 SSMS,为数据库“新建视图”,将启用视图设计器。在起始界面,将出现“添加表”的窗口。可以在此窗口添加所需要的表、视图、函数和同义词等。SSMS 会自动添加并显示视图设计器的工具栏。视图设计器从上往下被划分为4个窗格:关系图窗格、条件窗格、SQL 窗格和结果窗格。可以通过工具栏或者右键菜单显示或关闭某些窗格。根据新建视图的需要,从表中选择视图引用的列。将列加入视图有3中方式:可以再关系图中选中相应表的相应列左边的复选框来完成;也可以通过选择条件窗格中的【列】栏上的列名来完成;还可以再SQL窗格中输入SELECT语句来选择视图需要的列。通过工具栏或者右键菜单可以随时添加表或派生表。如果某些表已经创建了主键,则视图设计器会自动识别主键并为这些表创建 INNER JOIN。也可以手动将其中一个表的某个列拖曳到另一个表的某个列,从而为这两个表建立连接。默认的连接是内连接(INNER JOIN),如果需要修改为其它连接关系(LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN 等),可以直接右键单击连接,然后选择从某张表中“选择所有行”。在“条件窗格”中,可以创建别名,添加筛选、分组条件,或者在 “SQL 窗格”中编辑 T-SQL 代码,创建别名,添加筛选、分组条件。从工具栏或右菜单选择“执行 SQL”可以查看输出结果。 三、 实验小结 无论你遇到什么挫折,以追求自我的心态去理解世界的规律,并因此明白,所有努力将都有意义,享受努力带给自己的改变!


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有