数据库的视图定义及维护实验.docx

上传人:b****6 文档编号:8461384 上传时间:2023-01-31 格式:DOCX 页数:13 大小:717.14KB
下载 相关 举报
数据库的视图定义及维护实验.docx_第1页
第1页 / 共13页
数据库的视图定义及维护实验.docx_第2页
第2页 / 共13页
数据库的视图定义及维护实验.docx_第3页
第3页 / 共13页
数据库的视图定义及维护实验.docx_第4页
第4页 / 共13页
数据库的视图定义及维护实验.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数据库的视图定义及维护实验.docx

《数据库的视图定义及维护实验.docx》由会员分享,可在线阅读,更多相关《数据库的视图定义及维护实验.docx(13页珍藏版)》请在冰豆网上搜索。

数据库的视图定义及维护实验.docx

数据库的视图定义及维护实验

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(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1