数据库的视图定义及维护实验.docx
- 文档编号:8461384
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:13
- 大小:717.14KB
数据库的视图定义及维护实验.docx
《数据库的视图定义及维护实验.docx》由会员分享,可在线阅读,更多相关《数据库的视图定义及维护实验.docx(13页珍藏版)》请在冰豆网上搜索。
数据库的视图定义及维护实验
1.1实验6数据库的视图定义及维护实验
班级:
网工01班姓名:
杨莉学号:
201706062103
1.实验目的
本实验的目的是使学生掌握视图的定义与维护操作,加深对视图在关系数据库中的作用的理解。
[相关知识]
视图是根据子模式建立的虚拟表。
一个视图可以由一个表构造,也可以由多个表构造。
利用ManagementStudio和视图创建向导进行创建,查看和修改视图就如同对表的操作一样,非常容易。
0.1创建数据库
图1:
创建数据库“Yangl_Test6”
USEmaster
GO
CREATEDATABASEYangl_Test6
ON
(
NAME=Yangl_Test6_data,
FILENAME='D:
\数据库\Yangl_Test6_Data.mdf',
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5
)
LOGON
(
NAME=Yangl_Test6_Log,
FILENAME='D:
\数据库\Yangl_Test6_Log.ldf',
SIZE=5MB,
MAXSIZE=25MB,
FILEGROWTH=4MB
)
GO
0.2创建数据表
图2:
创建数据表“Yangl_Depts”、“Yangl_Students”“YAngl_Courses”和“Yangl_Reports”
CREATETABLEYangl_Depts
(
yl_DnoCHAR(5)PRIMARYKEY,
yl_DnameCHAR(20)NOTNULL
)
CREATETABLEYangl_Students
(
yl_SnoCHAR(10)PRIMARYKEY,
yl_SnameCHAR(20)NOTNULL,
yl_SsexCHAR
(2),
yl_BirthdayDATE,
yl_DnoCHAR(5),
CONSTRAINTyl_FK_DnoFOREIGNKEY(yl_Dno)REFERENCESYangl_Depts
)
CREATETABLEYAngl_Courses
(
yl_CnoCHAR(5)PRIMARYKEY,
yl_CnameCHAR(20),
yl_Pre_CnoCHAR(5),
yl_Pre_CnameCHAR(20),
yl_GreditsINT
)
CREATETABLEYangl_Reports
(
yl_SnoCHAR(10),
yl_CnoCHAR(5),
yl_GradeINTCHECK(yl_Grade>=0ANDyl_Grade<=100),
PRIMARYKEY(yl_Sno,yl_Cno),
CONSTRAINTStudents_ReportsFOREIGNKEY(yl_Sno)REFERENCESYangl_Students,
CONSTRAINTReports_CoursesFOREIGNKEY(yl_Cno)REFERENCESYangl_Courses
)
0.3插入数据
图3:
插入数据到表“Yangl_Depts”、“Yangl_Students”“YAngl_Courses”和“Yangl_Reports”中
INSERTINTOYangl_DeptsVALUES('D01','信息系')
INSERTINTOYangl_DeptsVALUES('D02','自动化系')
INSERTINTOYangl_DeptsVALUES('D03','数学系')
INSERTINTOYangl_DeptsVALUES('D04','通信系')
INSERTINTOYangl_DeptsVALUES('D05','电子系')
INSERTINTOYangl_CoursesVALUES('C01','英语',NULL,NULL,4)
INSERTINTOYangl_CoursesVALUES('C02','数据结构','C05','C++',2)
INSERTINTOYangl_CoursesVALUES('C03','数据库','C02','数据结构',2)
INSERTINTOYangl_CoursesVALUES('C04','DB_设计','C03','数据库',3)
INSERTINTOYangl_CoursesVALUES('C05','C++',NULL,NULL,3)
INSERTINTOYangl_CoursesVALUES('C06','网络原理','C07','操作系统',3)
INSERTINTOYangl_CoursesVALUES('C07','操作系统','C05','C++',3)
INSERTINTOYangl_CoursesVALUES('C08','高等数学',NULL,NULL,4)
INSERTINTOYangl_StudentsVALUES('2015001','刘晨','男','1995-10-12','D01')
INSERTINTOYangl_StudentsVALUES('2015002','邓勇武','男','1997-08-21','D01')
INSERTINTOYangl_StudentsVALUES('2015003','田彪','男','1998-02-11','D01')
INSERTINTOYangl_StudentsVALUES('2015004','李涛','男','1996-12-22','D01')
INSERTINTOYangl_StudentsVALUES('2015005','杨钊','男','1999-10-31','D02')
INSERTINTOYangl_StudentsVALUES('2015006','张业成','男','1994-08-08','D02')
INSERTINTOYangl_StudentsVALUES('2015007','黄伊汶','女','1995-12-12','D02')
INSERTINTOYangl_StudentsVALUES('2015008','杨钰莹','女','1997-03-21','D02')
INSERTINTOYangl_StudentsVALUES('2015009','肖雅芝','女','1998-04-11','D03')
INSERTINTOYangl_StudentsVALUES('2015010','李若彤','女','1996-11-22','D03')
INSERTINTOYangl_StudentsVALUES('2015011','杨爱瑾','女','1999-10-31','D03')
INSERTINTOYangl_StudentsVALUES('2015012','朱茵','女','1995-07-08','D03')
INSERTINTOYangl_ReportsVALUES('2015001','C08',92)
INSERTINTOYangl_ReportsVALUES('2015001','C03',84)
INSERTINTOYangl_ReportsVALUES('2015002','C08',90)
INSERTINTOYangl_ReportsVALUES('2015002','C02',94)
INSERTINTOYangl_ReportsVALUES('2015002','C03',82)
INSERTINTOYangl_ReportsVALUES('2015003','C08',72)
INSERTINTOYangl_ReportsVALUES('2015003','C02',90)
INSERTINTOYangl_ReportsVALUES('2015004','C03',75)
INSERTINTOYangl_ReportsVALUES('2015011','C01',92)
INSERTINTOYangl_ReportsVALUES('2015011','C02',92)
INSERTINTOYangl_ReportsVALUES('2015011','C03',92)
INSERTINTOYangl_ReportsVALUES('2015011','C04',92)
INSERTINTOYangl_ReportsVALUES('2015011','C05',92)
INSERTINTOYangl_ReportsVALUES('2015011','C06',92)
INSERTINTOYangl_ReportsVALUES('2015001','C01',80)
INSERTINTOYangl_ReportsVALUES('2015009','C01',94)
INSERTINTOYangl_ReportsVALUES('2015008','C01',100)
INSERTINTOYangl_ReportsVALUES('2015002','C01',92)
2.实验内容
本实验的主要内容是:
1)创建和删除视图
2)查询和更新视图
具体完成以下例题。
例1建立信息系学生的视图
图3:
建立信息系学生的视图“Xinxi_Students”
CREATEVIEWXinxi_Students
AS
SELECT*
FROMYangl_Students
WHEREyl_DnoIN
(
SELECTyl_Dno
FROMYangl_Depts
WHEREyl_Dname='信息系'
)
例2建立信息系学生的视图,并要求进行修改和插入操作时仍须保证该视图只有信息系的学生。
图4:
建立信息系学生的视图“Xinxi2_Students”
CREATEVIEWXinxi2_Students
AS
SELECT*
FROMYangl_Students
WHEREyl_DnoIN
(
SELECTyl_Dno
FROMYangl_Depts
WHEREyl_Dname='信息系'
)
WITHCHECKOPTION
例3建立信息系选修了’C01’号课程的学生视图
图5:
建立信息系选修了’C01’号课程的学生视图“Xinxi3_Students”
CREATEVIEWXinxi3_Students
AS
SELECT*
FROMYangl_Students
WHEREyl_DnoIN
(
SELECTyl_Dno
FROMYangl_Depts
WHEREyl_Dname='信息系'
)ANDEXISTS
(
SELECTyl_Cno,yl_Sno
FROMYangl_Reports
WHEREyl_Cno='C01'ANDYangl_Reports.yl_Sno=Yangl_Students.yl_Sno
)
例4建立信息系选修了’C01’号课程且成绩在90分以上的学生视图
图6:
建立信息系号课程的学生视图“Xinxi4_Students”
CREATEVIEWXinxi4_Students
AS
SELECT*
FROMYangl_Students
WHEREyl_DnoIN
(
SELECTyl_Dno
FROMYangl_Depts
WHEREyl_Dname='信息系'
)ANDEXISTS
(
SELECTyl_Cno,yl_Sno
FROMYangl_Reports
WHEREyl_Cno='C01'ANDYangl_Reports.yl_Sno=Yangl_Students.yl_SnoANDyl_Grade>=90
)
例5定义一个反映学生出生年份的视图
图7:
定义一个反映学生出生年份的视图“Students_birth”
CREATEVIEWStudents_birth(yl_Sno,yl_Sname,yl_Birthday)
AS
SELECTyl_Sno,yl_Sname,DATENAME(yyyy,GETDATE())-YEAR(yl_Birthday)
FROMYangl_Students
3.实验步骤
1.创建视图
下面利用了SQLServer中提供的视图创建向导,来实现例3(建立信息系选修了1号课程的学生视图)。
1)打开ManagementStudio窗口,确认服务器,打开数据库文件夹,选中新视图所在的数据库(此例为学生选课数据库)。
2)选择菜单:
[工具]|[向导]
3)在如图1所示的向导选择对话框中,单击数据库左边的“+”号,使之展开。
选择“创建数据库向导”项,单击“确定”按键。
图1向导选择对话框
4)进入创建视图向导后,首先出现的是欢迎使用创建视图向导对话框,其中简单介绍了该向导的功能。
单击“下一步”后,就会出现选择数据库对话框。
5)在选择数据库对话框中,选择视图所属的数据库。
本例的数据库为“学生选课”。
单击“下一步”按键,则进入选择表对话框。
6)在选择表对话框中,列出了指定数据库中所有用户定义的表。
用户可以从中选择构造视图所需的一个表或者多个表,被选中的表成为构造视图的参考表。
选择构造视图参考表的方法是:
用鼠标单击表后的“包含在视图中”列,使复选框为选中状态。
本例的数据库中只有学生表和选课表,它们都应当被选中。
单击“下一步”按键,则进入选择对话框。
7)列选择对话框中以表格形式列出了创建视图参考表的全部属性,每个属性占表的一行,创建视图参考属性可以在表格中选出。
选择视图参考属性的方法是用鼠标单击属性名后边的“选择列”列,使复选框为选中状态。
本例中学生.学号,学生.姓名和选课.成绩属性要被选中。
单击“下一步”按键,进入创建视图的定义限制对话框,如图2所示。
图2定义限制对话框
8)在定义限制对话框中,输入表的连接和元组选择条件。
本例输入“所在系=’信息系’AND学生.学号=选课.学号AND选课.课程号=‘C01’”。
单击“下一步”按键,出现视图名对话框。
9)在输入视图名对话框中输入所建视图的标识名。
本例的视图名为“信息系—选课1”。
单击“下一步”按键,则出现视图创建完成对话框。
在完成对话框中给出了根据前面对话框输入的内容译成的SQL语句。
您可以认真阅读该SQL语句,如果发现与要求有不符合之处可以直接进行修改。
确认无误后单击“完成”按钮。
随后出现一个通知用户已成功创建视图的信息框,单击“确认”按钮后,整个创建视图工作就完成了。
2.查看和修改视图
视图创建好后,就可以利用它进行查询信息了。
如果发现视图的结构不能很好地满足要求,还可以在ManagementStudio对它进行修改。
在ManagementStudio中修改视图结构需要首先选择服务器,数据库,并使数据库展开,然后用鼠标右击要修改的视图,在弹出的菜单上选择“设计视图”项,则弹出一个视图设计对话框,如图3所示。
当对其修改完毕后关闭窗口,新的视图结构就会取代原先的结构。
4.实验体会
主要学习到了视图的创建,题目非常简单。
基本上是在第一个视图的基础上增加查询条件。
如果子查询语句不止一个的话不能用IN,要用EXISTS,其他的题目书上都有。
因为是很久之前上过的课,所以有一点忘记了。
实验过程中也有一些忘记或者是写错的情况,所以要删除视图,这个和数据表的删除差不多。
格式为DROPVIEW[视图名字]。
如果要查询所创建的视图是否正确可以用查询语句,如上面题目截图。
整个过程可以按照数据表的方式进行思考和改变。
3.将查询需求用SQL语言表示;在SQL查询分析的输入区中输入SQL查询语句;设置查询分析的结果区为StandardExecute(标准执行)或ExecutetoGrid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 视图 定义 维护 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)