实验9 视图与索引_答案

合集下载

视图与索引资料

视图与索引资料

《数据库原理》实验报告题目:实验四视图与索引学号姓名班级日期2016/10/20一.实验内容、步骤以及结果1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是1996年出生的学生的视图,视图中包括学号,性别,成绩三个信息。

2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:V_SPJ)第一种:USE [SPJ]GOCREATE VIEW V_SPJASSELECT SNO,SPJ.PNO,QTYFROM SPJ,JWHERE SPJ.jno=J.jno AND J.jname='三建'第二种:USE [SPJ]GOCREATE VIEW V_SPJASSELECT sno,pno,qtyFROM SPJWHERE SPJ.jno IN (SELECT jnoFROM JWHERE J.Jname='三建')3.用SQL语句完成第五版教材第三章第11题中的视图查询(1)USE [SPJ]SELECT DISTINCT PNO,QTYFROM V_SPJ(2)USE [SPJ]SELECT DISTINCT *FROM V_SPJWHERE SNO='S1'4.用SQL语句完成视图的数据更新。

(1)给视图V_SPJ中增加一条数据。

1、先建立INSTEAD OF触发器INSERT_SPJ:CREATE TRIGGER INSERT_SPJON V_SPJINSTEAD OF INSERTASBEGINDECLARE @SNO CHAR(10)DECLARE @PNO CHAR(10)DECLARE @QTY INTSELECT @SNO=SNO,@PNO=PNO,@QTY=QTYFROM INSERTEDINSERT INTO SPJ(SNO,PNO,JNO,QTY)VALUES(@SNO,@PNO,'J1',@QTY)END2、增加数据:INSERTINTO V_SPJVALUES('S7','P9',301)(2)修改视图V_SPJ中的任意一条数据的供应数量。

第9章 实训-视图与索引

第9章 实训-视图与索引

对Book2表,设计完成下述设置: (软件信息用代码做,电子能源用管理器做)
1.为编号设计唯一聚集索引,操作数据检查是否 具有主键的效果 2.为书名设计唯一索引,如有重名,改为设置非 唯一索引 3.修改索引名称 4.查看book2的所有索引 5.删除索引
第9章
视图与索引 实训
视图实训作业:
①学生信息与成绩信息视图:学号、姓名、课程名称、 成绩(用管理器设计) ②在成绩表上,建立分数>90的 优秀学生成绩视图 (用管理器、T-SQL语言设计两种方法设计) ③班级课程成绩统计表视图,包括:班级编号、课程 代码、均分、最高分、最低分( T-SQL语言设计,提 示:按班级编号、课程代码分组统计) ④按专业按班级统计男女生人数的视图( T-SQL语言 设计)

实验九 视图和索引 实验指导

实验九 视图和索引 实验指导

实验九视图和索引实验指导一、视图视图是SQL Server中重要的数据库对象。

视图常用于集中、简化和定制显示数据库的数据信息,为用户从多种角度观察数据库中的数据提方便。

为了屏蔽数据的复杂性、简化用户对数据的操作、控制用户访问数据的权限、保护数据安全,常为不同的用户创建不同的视图。

1. 视图的基本概念视图是从一个或多个表或视图导出的表;其结构和数据是建立在对表的查询基础上的。

和表一样,视图也是包括几个被定义的数据列和多个数据行。

但就本质而言,这些数据列和数据行来源于其所引用的表。

所以,视图不是真实存在的基础表,而是一张虚表。

视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。

视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份。

通过视图看到的数据,只是存放在基本表中的数据。

对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。

当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。

可以将任何符合视图创建规定的SELCT语句命名和存储为视图。

在视图中北查询的表称为基表。

视图的常见实例如下。

●一个基表的行或列的于集。

●两个或多个表的合并。

●两个或多个表的联接。

●一个基表的统计总汇。

●另外一个视图的子集。

●视图和基表的混合。

2. 创建视图在SQL Server2005中创建视图,创建者必须拥有创建视图的权限,并且对视图中引用的基表或视图有许可权。

此外,创建视图前还应该注意以下几点:●只能在当前数据库中创建视图。

如果使用分布式查询,视图所引用的基表和视图可以存在于其他数据库或其他服务器中。

●在一个视图中最多引用1024列,视图中记录的行数限制由基表中的记录数目决定。

●视图的名称必须遵循标识符的命名规则,且对每个架构都必须唯一,并且该名称不得与该架构包含的任何表的名称相同。

数据库实验-数据库索引、视图与触发器

数据库实验-数据库索引、视图与触发器

石家庄经济学院实验报告学院: 信息工程学院专业: 网络工程信息工程学院计算机实验中心制1.索引的建立和删除操作2.视图的创建、修改、更新和查询操作二实验目的1.掌握数据库索引建立与删除操作,掌握数据库索引的分类,并了解建立数据库索引的意义、作用。

2.掌握视图的创建和查询操作,理解视图的使用,理解实图在数据库安全性中的作用。

三实验内容1.索引的建立和删除操作(1)在S表中,建立按照sno升序的惟一性索引snoIDX。

(2)在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。

(3)在S表中,按照生日建立一个非聚簇索引birthdayIDX。

(4)在C表中,建立一个按照课程名升序的聚簇索引cnameIDX。

(5)删除索引cnameIDX。

2.视图的创建、修改、更新和查询操作(1)建立一个关于所有女生信息的视图S_GIRL。

(2)将各系学生人数,平均年龄定义为视图V_NUM_AVG(3)建立一个视图反映学生所选课程的总学分情况TOTAL_CREDIT。

(4)建立一个所有学生课程成绩的视图S_GRADE,包括基本学生信息,课程信息和成绩。

(5)在视图S_GRADE基础之上,建立一个两门课以上成绩不及格的学生情况视图FAIL_GRADE。

(6)建立一个至少选修了4门课及4门课以上的学生信息的视图SC_FOUR。

(7)修改视图S_GIRL,要求只显示1997年以前出生的女生信息。

(8)在视图FAIL_GRADE查询不及格超过2门课的学生信息。

(9)删除视图S_GRADE。

(10)通过视图S_GIRL,将“王丹”的名字修改为“汪丹”,并查询结果。

(11)通过视图S_GIRL,新增一个学生信息(“刘兰兰”,“女”,“计算机学院”,1996-8-8),并查询结果。

(12)通过视图S_GIRL,删除1995年出生的女生信息,并查询结果。

(13)通过视图S_GRADE,将“汪丹”的名字修改为“王丹”,是否可以实现,请说明原因。

实验九视图答案

实验九视图答案

实验九:视图的定义与操纵学号姓名[ 实验目的 ]通过实验进一步理解视图的建立和更新。

[ 实验内容 ]1. SQL视图的定义与操纵:例1-1: (建立视图) 建立计算机科学系的学生的视图STUDENT_CS。

create view student_csasselect*from student where sdept='计算机科学'例1-2: (建立视图) 建立由学号和平均成绩两个字段组成的视图STUDENT_GR。

create view student_GR(Sno,Gavg)asSELECT Sno,A VG(Grade)FROM SCGROUP BY Sno例1-3: (视图创建) 创建视图STUDENT_SS,求年龄大于19岁的学生的全部信息,要求带WITH CHECK OPTION子句。

CREATE view STUDENT_SSasselect*from studentwhere sage>19WITH CHECK OPTION例1-4: (视图查询) 利用视图STUDENT_GR,求平均成绩为88分以上的学生的学号和平均成绩。

select sno,gavgfrom student_GRWHERE gavg>88例1-5: (视图更新) 利用视图STUDENT_CS,增加学生( ‘96006’,‘张然’,‘CS’,‘02’,‘男’,19 )。

insert into student_cs(sno,sname,ssex,sage,sdept,ty) values('96006','张然','男',19,'CS','true')例1-6: (视图更新) 利用视图STUDENT_SS,将学生年龄增加1岁。

观察其运行结果并分析原因。

update student_SSset sage=sage+1例1-7: (视图更新) 利用视图STUDENT_GR,将平均成绩增加2分。

实验训练4:视图和索引的构建与使用

实验训练4:视图和索引的构建与使用

实验训练4:视图和索引的构建与使用1. 简介在数据库中,视图是一种虚拟表,它是基于查询结果动态生成的。

视图可以看作是一个预定义的查询,通过视图可以方便地访问和组织数据。

本文将介绍在数据库中如何创建和使用视图,以及如何构建索引来提高查询性能。

2. 创建视图在数据库中,可以使用CREATE VIEW语句来创建一个视图。

视图的创建需要满足以下条件:•视图的名字必须唯一。

•视图的定义必须是一个有效的SELECT语句。

下面是一个创建视图的示例:CREATE VIEW view_name AS SELECT column1, column2 FROM table_name WHERE condition;其中,view_name是视图的名称,column1和column2是视图所包含的列名,table_name是数据来自的表名,condition是过滤条件。

创建视图之后,可以使用SELECT语句来查询视图的内容,就像查询表一样。

3. 修改视图在数据库中,可以使用ALTER VIEW语句来修改一个已经存在的视图。

修改视图可以包括添加、删除和修改列。

下面是一个修改视图的示例:ALTER VIEW view_name ADD column_name datatype;其中,view_name是要修改的视图的名称,column_name 是要添加的列名,datatype是列的数据类型。

4. 删除视图在数据库中,可以使用DROP VIEW语句来删除一个已经存在的视图。

下面是一个删除视图的示例:DROP VIEW view_name;其中,view_name是要删除的视图的名称。

5. 索引的构建与使用索引是一种数据结构,可以提高数据库的查询性能。

数据库中的索引可以分为以下几种类型:•B-Tree索引:适用于等值查询和范围查询。

•哈希索引:适用于等值查询。

•全文索引:适用于关键词搜索。

在数据库中,可以使用CREATE INDEX语句来创建索引。

数据库原理之视图与索引的实验报告

数据库原理之视图与索引的实验报告

一、实验名称
视图与索引
二实验目的
1.学会使用企业管理器建立视图与索引
2.掌握使用SQL语句建立视图与索引
三实验内容
1.使用企业管理器建立视图索引
2.使用SQL语句建立视图索引
四实验准备
1.复习与本次实验内容相关知识
2.对本次实验中要求自己完成的部分做好准备
五实验步骤
1.用企业管理器建立一个基于学生表、课程表、成绩表的视图,要求该视图
显示学号、姓名、课程、成绩
用查询分析器建立一个基于学生表、班级表的学生视图
自己写一个SQL语句建立一个基于课程表的视图(V_COURSES),要求显示
课程编号、课程名、学分。

查看索引
2.为学生表按班级建立一个非簇集索引FK_U_STUDENTS,操作过程如下
实验心得
总的来说,这次实验因为在上面的几次试验中取得的一些经验,在做实验的时候,也不觉得有多么大的困难了。

相反,感觉有点轻车熟路。

这次实验的目的是学会使用企业管理器建立视图与索引,掌握使用SQL语句建立视图与索引。

在做实验的时候遇到的问题是发现自己建立的视图遇到与表的内容不符的情况,这是由于我对上次表的内容有些模糊,而导致后面做实验出现问题。

在查询了以前建的表后,我又认真做了修改,使得在建立视图的时候能够与表建立紧密的联系,从而不会孤立表的建立。

到了后期,视图的建立也简单多了。

其实,在我做完这个实验之后,明白这次实验都主要是围绕SQL语句,对于语句的熟悉和掌握,有助于我们对数据的应用。

在以后的工作中,也能够发挥到学到知识的作用。

索引和视图实验答案

索引和视图实验答案

《索引和视图》实验一、实验目的与要求1.学会使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引。

2.学会使用SQL Server管理平台查看索引。

3.学会使用SQL Server管理平台和Transact-SQL语句DROP INDEX 删除索引。

4.掌握使用SQL Server管理平台、向导等创建、管理和删除全文索引,并使用全文索引查询信息的方法。

5. 掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。

6.掌握系统存储过程sp_rename的用法。

7.掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。

二、实验平台1、操作系统:Windows XP或Windows 20032、数据库管理系统:SQL Server 2005三、实验内容1.分别使用SQL Server管理平台和Transact-SQL语句为教务管理系统数据库的《学生信息》和《课程信息》创建主键索引。

(1) 使用SQL Server管理平台为教务管理系统数据库的《学生信息》和《课程信息》创建主键索引。

(2) 使用Transact-SQL语句为教务管理系统数据库的《学生信息》和《课程信息》创建主键索引。

USE教务管理系统GOcreate unique nonclustered index学生信息_idxon学生信息(学号)GOUSE教务管理系统GOcreate unique nonclustered index课程信息_idxon课程信息(课程编号)GO2.使用SQL Server管理平台按《课程信息》的课程编号列创建唯一性索引。

3.分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的《成绩表》的“分数”字段创建一个非聚集索引,命名为《成绩_index》。

(1)使用SQL Server管理平台为教务管理系统数据库的《成绩表》的“分数”字段创建一个非聚集索引,命名为《成绩_index》。

实验6:使用索引,视图和批量(答案)

实验6:使用索引,视图和批量(答案)

GDOU-B-11-112广东海洋大学学生实验报告书实验名称实验六:使用索引、视图和批量课程名称数据库原理与设计成绩学院(系)软件学院专业计算机软件工程班级学生姓名学号实验地点实验日期实验目的:1.掌握索引的创建语法2.掌握视图的创建语法3.使用视图更新数据4.编写各种批量实验内容针对GlobalToyz和Recruitement,Student数据库,按要求完成下列题目。

1.对于Toys表,在玩具名称上建立一个唯一索引,写出相应的T-SQL语句。

2.对于Shipment表,我们会经常查看玩具的实际发送日期(dActualDeliveryDate),请问,我们应该建立什么索引加快每次查询该列的速度,并写出相应的T-SQL语句。

3.创建一个视图,由Toys表的vToyDescription和mToyRate列构成,要求限制用户查看该视图的生成脚本语句。

4.对于Recruitment数据库,创建一个视图名为vwCandidateContractRecruiter,其中包含了外部候选人的代码,姓名,测试成绩,以及其对应的合同招聘人员的代码和名称。

create view vwCandidateContractRecruiter as select andidatecode, a.vFirstname,a.vLastname, a.siTestScore,ontractRecruitercode,ame from Externalcandidate ajoin ContractRecruiter b on ontractREcruitercode=ontractRecruiterCod5.对于第4题中创建的视图vwCandidateContractRecruiter进行更新,修改外部候选人代码为‘000049’的候选人,更改其测验成绩为87分,并更改相对应的合同招聘人员的名称为‘Roger Federal’。

数据库实验报告 索引和视图

数据库实验报告 索引和视图

西北师范大学计算机科学与工程学院学生实验报告2、在student表的studentno和classno列上创建唯一索引UQ-stu,若该索引已存在,则删除后重建。

然后输出student表中的记录,查看输出结果的顺序。

SQL代码:USE teachingGOIF EXISTS(SELECT name FROM sysindexes WHERE name='UQ_stu')DROP INDEX student.UQ_stuGOCREATE NONCLUSTERED INDEX UQ_stu ON student(studentno,classno)GOSELECT*FROM student实验结果:3、修改UQ-stu的索引属性,当执行多行插入操作时出现重复键值,则忽略该记录,且设置填充因子为80%SQL代码:USEteachingGOALTER INDEX UQ_stu ON student REBUILDWITH(PAD_INDEX=ON,FILEFACTOR=80,IGNORE-DUP_KEY=ON)GO实验结果:4、创建一个视图v-teacher,查询“计算机学院”所有教师的信息SQL代码:USE teachingGOCREATE VIEW v_teacherASSELECT*FROM teacherWHERE department='计算机学院'GOSELECT*FROM v_teacher实验结果:5、创建一个视图v-avgstu,查询每个学生的学号、姓名及平均分,并且按照平均分降序排序SQL代码:USE teachingGOCREATE VIEW v_avgstuASSELECT TOP(100)PERCENT student.studentno,studnt.sname,AVG(score.final)AS 'average'FROM student,scoreWHERE student.studentno=score.studentnoAND score.final IS NOT NULLGROUP BY student.studentno,student.snameORDER BY AVG(score.final)DESCGOSELECT*FROM v_avgstu实验结果:6、修改v-avgstu的视图定义,添加WITH CHECK OPTION选项SQL代码:USE teachingGOALTER VIEW v_avgstuASSELECT*FROM teacherWHERE department='计算机学院'WITH CHECK OPTIONGO实验结果:7、通过视图v-avgstu向基表teacher中分别插入数据(‘05039’,‘张馨月’,‘计算机应用’,‘讲师’,‘计算机学院’)和(‘06018’,‘李诚’,‘机械制造’,‘副教授’,‘机械学院’),并查看插入数据的情况SQL代码:USE teachingGOINSERT INTO v_teacherVALUES('05039','张馨月','计算机应用','讲师','计算机学院')INSERT INTO v_teacherVALUES('06018','李诚','机械制造','副教授','机械学院')SELECT*FROM v_teacherSELECT*FROM teacher实验结果:8、通过视图v-teacher将基表teacher中教师编号为05039的教师职称修改为“副教授”SQL代码:USE teachingGOUPDATE v_teacherSET prof='副教授'WHERE teacherno='05039'GOSELECT*FROM teacher实验结果:实验总结:通过本次实验掌握了索引、统计信息和视图等数据库对象的基本概念和基本操作。

实验6:使用索引,视图和批量(答案)

实验6:使用索引,视图和批量(答案)

GDOU-B-11-112广东海洋大学学生实验报告书实验名称实验四:使用子查询课程名称数据库原理与设计成绩学院(系)软件学院专业计算机软件工程班级学生姓名学号实验地点实验日期实验目的:1.掌握带谓词IN的子查询;2.掌握带存在量词的子查询;3.掌握使用比较运算符的子查询;4.掌握使用限量谓词的子查询;5.综合运用所学知识实现查询;6.掌握SELECT INTO语句和UNION语句实验内容完成在在Recruitment,GlobalToyz和Student数据库基础上的查询,按要求完成给出的下列题目,要求写出相应数据库的查询语句(SELECT)。

1.将售价大于9元的玩具信息拷贝到一张局部临时表中,该表仅在一次会话中存在。

2.查询截止日期(dExpiryDate)在2001年5月的订购者(Shopper)的姓名和所在城市。

3.根据玩具品牌统计每种品牌的平均价格,输出其中平均价格最高的品牌ID以及平均价格。

4.检索每一类(类别用cCategoryId表示)玩具里价格最高的玩具的名称。

5.检索价格最高的玩具的品牌(品牌为Brand)名称。

6.要求必须用带EXISTS量词的嵌套查询实现,检索和‘David Cooper’住在同一个州的订购者(Shopper)的姓和名。

7.检索‘California’州的订购者(Shopper)和接收人(Recipient)的姓名以及住址。

8.检索订购者的人数,他们和‘Lisa Lee’使用同一种类型的信用卡。

9.检索订购了玩具品牌为‘Largo’的订购者的姓和名。

(多层嵌套查询实现)10.检索价格不低于所有品牌ID为‘005’的玩具的名称。

指导教师日期注:请用A4纸书写,不够另附纸。

第页,共页1.select * into #temptoys from toys where mToyRate>92.select vFirstname,vLastname,cCity from Shopper where datepart(yy,dExpiryDate)=2001 anddatepart(mm,dExpirydate)=53.select cBrandId,Avg(mToyrate) from Toys Group by cBrandId having avg(mToyrate)>=all(select avg(mToyrate) from toys group by cBrandId)4.select vToyname from Toys a where mToyrate=(select max(mToyrate) from Toys b whereategoryId=ategoryId)5.select cBrandName from ToyBrand where cBrandId in(select cBrandId from Toys wheremToyrate=(select max(mToyrate) from toys))6.select vFirstname,vLastname from Shopper a where exists(select * from Shopper b wherevFirstname=’David’ and vLastname=’Cooper’ and b.cState=a.cState)7.select vFirstname,vLastname,vAddress from Shopper where cState=’California’unionselect vFirstname,vLastname,vAddress from Recipient where cState=’California’8.select count(*) from shopper where vCreditCardType in(select vCreditCardType fromShopper where vFirstname=’Lisa’ and vLastname=’Lee’9.select vFirstname,vLastname from Shopper where cShopperId in(select cShopperId fromorders where cOrderNo in(select cOrderNo from Orderdetail where cToyId in (select cToyId from toys where cBrandId in(select cBrandid from toybrand where cBrandName=’Largo’)))) 10.select vToyname from toys where mToyrate>=some(select mToyrate from Toys wherecBrandid=’005’)。

数据库实验报告:视图 和索引

数据库实验报告:视图 和索引

一、实验步骤(一)附加上次实验所创建的数据库“db_Library”,并回顾该数据库的数据表信息。

(二)练习创建和管理视图1、使用管理控制台创建一个名为“计算机系借阅信息_VIEW”的视图,要求显示计算机系读者2011-1-1以后借阅的图书信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段。

打开sql server管理控制台窗口,打开新建视图对话框。

在添加表中添加tb_borrow和tb_reader表,在选中输出复选框中选中:读者编号,图书编号,借阅日期。

use db_library goselect * from 读者借阅信息_VIEWwhere 所在系='计算机'and 借阅日期>'2011_1_1'2、使用T-SQL语句创建一个名为“读者借阅信息_VIEW”的视图,要求显示所有的读者借阅信息,包括“读者编号”、“姓名”、“系部”、“图书编号”、“图书名称”和“借阅日期”等字段。

use db_library gocreate view 读者借阅信息_VIEW asselect tb_readder.读者编号,tb_reader.姓名,tb_reader所在系,tb_book.图书编号,tb_book.书名,tb_borrow.借阅日期 from tb_reader,tb_borrow,tb_bookwhere tb_reader.读者编号=tb_borrow.读者编号and tb_book.图书编号=tb_borrow.图书编号Select * from读者借阅信息_VIEW3、使用管理控制台查看“读者借阅信息_VIEW”视图的定义信息和依赖的对象。

打开管理控制台,在数据库“db_Library”下的“视图”对象;在左边窗口右击“读者借阅息_VIEW”该视图,在在窗口中选中“查看依赖关系”选项。

4、使用系统存储过程查看“计算机系续借阅信息_VIEW”视图的定义信息和依赖的对象。

oracle实验9-10 索引与视图,序列和同义词的创建

oracle实验9-10 索引与视图,序列和同义词的创建

oracle实验9-10 索引与视图,序列和同义词的创建一、实验目的1.理解索引的概念和类型。

2.掌握创建索引的命令。

3.理解视图的概念和优点。

4.理解可更新视图应具备的特点。

5.掌握创建一般视图和可更新视图的命令。

6.理解序列和同义词的概念和作用。

7.掌握序列的创建与应用。

8.掌握同义词的创建与应用。

二、实验内容1.在数据库中创建Student表,包括学号Id、姓名Name、性别Sex、班级编号Class_id。

利用该表创建如下索引:(1)在Id字段上创建唯一的B树索引。

(2)在Name字段上创建普通的B树索引。

(3)在Sex 字段上创建位图索引。

语句:--建表:create table Student(Id char(6),Name varchar2(8),Sex char(2),Class_id char(4));create unique index index_id on Student(Id);create index index_name on Student(Name);create bitmap index index_sex on Student(Sex);截图:2.利用scott.emp 表创建视图并完成以下操作:(1)创建简单视图。

语句:conn scott/tiger;grant insert,update,delete on emp to system; conn system/orcl1234;create or replace VIEW v_empasselect empno,ename,job,hiredate,deptnofrom scott.emp;截图:(2)查看视图的结构。

语句:SQL> desc v_emp;截图:(3)从视图中查询数据。

语句:SQL> select * from v_emp where deptno=10;截图:(4)查看视图中各字段的可更新性。

实验8 视图和索引答案

实验8 视图和索引答案

实验8 视图和索引一、实验目的1.理解视图的概念。

2.掌握在查询分析器中创建、查询和删除视图的方法。

3.掌握使用企业管理器和T-SQL语句创建、查看和删除索引的方法。

4.掌握使用企业管理器和T-SQL语句创建、查询和修改视图的方法。

二、实验内容从查询分析器中导入实验文件夹中的“实验8初始化数据.sql”文件并运行,然后完成下面题目:(提示:学生表(Students):属性:学号(Sno),姓名(Sname),性别(Ssex),系别(Sdept),年龄(Sage)。

其中学号设为主键,学号和姓名不能为空,性别取值只能是F或M,系别缺省值为“计算机”。

选课信息表(Enrollment)。

属性:学号(Sno),课程名(Cno),成绩(Grade)。

其中课程号设为主键,课程号和课程名不能为空.。

课程信息表(Course)。

属性:课程号(Cno),课程名称(Cname),学分(Credits)。

)1.视图的创建。

(1)、使用企业管理器创建一个名为‚view_1‛的视图,内容是显示学生表St udents中年龄为18岁的学生的学号、姓名、性别和系别。

SQL代码如下:CREATE VIEW view_1ASSELECT Sno,Sname,SdeptFROM StudentsWHERE Sage = 18(2)、使用查询分析器创建一个名为‚view_2‛的视图,内容是显示学生表St udents中没有选修课程的学生的学号、姓名和系别,并且为该视图加密。

SQL代码如下:CREATE VIEW view_2WITH ENCRYPTIONASSELECT Sno,Sname,SdeptFROM StudentsWHERE Sno NOT INT (SELECT Sno FROM Enrollment)(3)、使用查询分析器修改名为‚view_1‛的视图,内容修改为显示学生表中男生的学号、姓名、性别和系别,并且以后所有对该视图的更新操作都必须符合所设定的条件。

实验九 视图和索引及数据关系图

实验九  视图和索引及数据关系图

实验九视图和索引及数据库关系一、实验目的使学生掌握SQL Server中视图的创建、查看、修改和删除方法,掌握索引的创建和删除方法以及数据库关系图的实现方法,加深对视图和SQL Server数据库关系图作用的理解。

二、实验内容(1)创建、查看、修改、和删除视图(2)创建、删除索引文件(3)创建数据库关系图三、实验指导本部分利用数据库JXGL的表S、SC、C中的数据进行实验1.视图操作(1)创建视图。

实验9.1 使用SQL Server Management Studio 直接创建视图。

(4)查看视图,单击“常用”工具栏中的“执行”按钮,就可以看到视图的数据显示。

实验9.2 使用T-SQL语句创建和查看视图语法格式如下:CREATE VIEW view AS select_statement在数据库JXGL中3个表的基础上建立一个视图,取名为view_s_grade。

在数据库引擎查看文档中输入如下代码:(2)修改视图视图在创建好后,就可以利用它查询信息了。

如果用户发现视图的结构不能很好她满足要求,还可以对它进行修改。

实验9.3 使用SQL Server Management Studio 窗口直接修改视图。

2.索引文件的创建与删除索引是一个单独的,物理的数据库结构,是为了加速对表中数据行的查询而创建的一种分散的存储结构(1)创建索引文件实验9.5 使用SQL Server Management Studio 窗口直接创建索引文件。

1.创建索引文件IX_sdept,关键字段为sdept,升序。

在数据库引擎查询文档中输入以下代码:在S表中心字段age创建索引文件IX_age,降序。

代码如下:3.创建数据库关系图如果数据库中的表没有设置主键,那么,用户可以在关系图中先设置主键,然后再建立实体关系。

数据库关系图是数据训架构的图形描述。

实验9.7 数据库JXGL的关系图管理。

第五章课后习题答案复习课程

第五章课后习题答案复习课程

第5章索引和视图1.索引的作用是什么?答:索引可以加快数据的查询效率。

2.索引分为哪几种类型?分别是什么?它们的主要区别是什么答:分为聚集索引和非聚集索引两种。

聚集索引会对数据进行物理排序,非聚集索引不对数据进行物理排序。

3.在一个表上可以创建几个聚集索引?可以创建多个非聚集索引吗?答:一个聚集索引。

可以。

4.聚集索引一定是唯一性索引,对吗?反之呢?答:不对。

反之也不对。

5.在建立聚集索引时,数据库管理系统是真正将数据按聚集索引列进行物理排序。

对吗?答:对。

6.在建立非聚集索引时,数据库管理系统并不对数据进行物理排序。

对吗?答:对。

7.不管对表进行什么类型的操作,在表上建立的索引越多越能提高操作效率。

对吗?答:不对。

9.使用第4章建立的Student、Course和SC表,写出实现下列操作的SQL语句。

(1)在Student表上为Sname列建立一个聚集索引,索引名为:SnoIdx。

Create clustered index SnoIdx on student(sname)(2)在Course表上为Cname列建立一个唯一的非聚集索引,索引名为:CNIdxCreate index CNIdx on course(cname)(3)在SC表上为Sno和Cno建立一个组合的聚集索引,索引名为:SnoCnoIdx。

Create clustered index SnoCnoIdx on SC(sno,cno)(4)删除Sname列上建立的SnoIdx索引。

11. 使用视图可以加快数据的查询速度,这句话对吗?为什么?答:不对,因为通过视图查询数据时,比直接针对基本表查询数据多了一个转换过程,即从外模式到模式的转换。

12.使用第4章建立的Student、Course和SC表,写出创建满足下述要求的视图的SQL语句。

(1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。

Create view v1 AsSelect s.sno,sname,sdept,o,cname,creditFrom student s join sc on s.sno = sc.snoJoin course c on o = o(2)查询学生的学号、姓名、选修的课程名和考试成绩。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

答:
--方式一,利用子查询 select 学号,姓名, (select count(*) from grade b where from student_info a
b.学号=a.学号) as 所学课程数目
--方式一,利用左外连接 select a.学号,姓名,b.所学课程数目 from student_info a left join (select 学号,count(distinct 课程编号) as 所学课程数目 from grade group by 学号) b on a.学号=b.学号
试验思考
回答以下问题:
(1)是否可以通过视图 v_stu_g 修改 grade 表中学号列数据?
(2)比较视图和基表操作表中数据的异同。
(3)可更新视图必须满足哪些条件?
(4)什么是索引?SQL Server 中有两种形式的索引:聚集索引和非聚集索引,
简单叙述它们的区别?
(5)能否在视图上创建索引?
实验 9 视图与索引
1.实验目的
(1) 掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW 创建视图、ALTER VIEW 修改视图的用法。
(2) 掌握使用SQL Server管理平台和Transact-SQL语句CREATE INDEX 创建索引、查看索引、DROP INDEX删除索引的方法。
grade_ind。 答: -- exec sp_rename '表名.索引名',' 新索引名','index' exec sp_rename 'grade.grade_index' , 'grade_ind','index'
(19) 分别使用SQL Server管理平台和Transact-SQL语句DROP INDEX删 除索引grade_ind。再次使用系统存储过程sp_helpindex查看grade表 上的索引信息。
'0003'的学生情况。
答: go create view v_stu_c as select a.学号,a.姓名,b.课程编号 from student_info a inner join grade b
on a.学号=b.学号;
(3) 基于student_info表、curriculum表和grade表,建立一个名为
(9) 利用视图v_stu_info删除学号为'0015'的学生记录。 答:delete from v_stu_info where 学号='0015'
(10) 利用视图v_stu_g修改姓名为'刘卫平'的学生的高等数学的分数为 '84'。
答: update v_stu_g set 分数=84 where 姓名='刘卫平'and 课程名称='高等数学'
数据库的student_info表和curriculum表创建主键索引。 答: alter table student_info alter column 学号 char(4) not null alter table student_info add constraint pk_学号 primary key (学号);
(15) 为grade表的'学号'和'课程编号'字段创建一个复合唯一索引,命名为 grade_id_c_ind。
答:CREATE UNIQUE INDEX grade_id_c_ind ON grade(学号 ,课程编号)
(16) 分别使用SQL Server管理平台和系统存储过程sp_helpindex查看 grade表和student_info表上的索引信息。
答:分别执行,sp_helpindex grade;和 sp_helpindex student_info;
上面这两个语句同时执行会报错,需要加上 GO,这样是同时查询的结果 go sp_helpindex grade; go sp_helpindex student_info; (17) 使用SQL Server管理平台对grade表创建一个聚集索引和唯一索引。 下面的创建只是举例,可以使用复合索引,也可以不使用复合索引。 本题的grade表,通过分析可知, 学号+课程编号 可以做为主键。目前还未设 定。 所以我们用(学号+课程编号)创建唯一索引比较合适。这里也是复合索引。 --唯一索引 CREATE UNIQUE INDEX grade_唯一索引 ON grade(学号 ,课程编号) 主键默认是唯一,聚焦索引,所以我们也可以创建聚焦索引 --聚焦索引 CREATE CLUSTERED INDEX grade_聚集索引 ON grade(学号 ,课程编号) (18) 使用系统存储过程sp_rename将索引grade_index更名为
v_stu_i的视图,使视图显示学生姓名、性别、家庭住址。 go create view v_stu_i as select 姓名,性别,家庭住址 from student_info;
(2) 使用Transact-SQL语句CREATE VIEW建立一个名为v_stu_c的视图,
显示学生的学号、姓名、所学课程的课程编号,并利用视图查EX <表名>.<索引名>
drop index grade.grade_ind sp_helpindex grade;
实验名称 实验日期 实验目的
实验环境 实验内容
视图与索引
掌握使用 SQL Server 管理平台和 Transact-SQL 语句 CREATE VIEW 创建视图、 ALTER VIEW 修改视图的用法。 掌握使用 SQL Server 管理平台和 Transact-SQL 语句 CREATE INDEX 创建索 引、DROP INDEX 删除索引的方法。 掌握使用 SQL Server 管理平台查看索引的方法。 了解索引和视图更名的系统存储过程 sp_rename 的用法。 了解删除视图的 Transact-SQL 语句 DROP VIEW 的用法。 Windows 7 ,SQL Server 2008/2012 按实验步骤完成视图与索引的创建。 实验中要求在查询设计器中用语句完成的实验,请在这里填写他们的语句,并 标上题号。
(3) 了解删除视图的Transact-SQL语句DROP VIEW的用法。 (4) 了解索引和视图更名的系统存储过程sp_rename的用法。
2.实验内容及步骤
请先附加studentsdb数据库,然后完成以下实验。 (1) student_info表为基础,使用SQL Server管理平台建立名为
v_stu_g的视图,视图中具有所有学生的学号、姓名、课程名称、分数。 答: go
create view v_stu_g as select a.学号,a.姓名,c.课程名称,b.分数 from student_info a inner join grade b on a.学号=b.学号 inner join curriculum c on b.课程编号=c.课程编号
【手写“回答以下问题”,若空白处不够,请附页完成】
(11) 使用Transact-SQL语句DROP VIEW删除视图v_stu_c和v_stu_g。 答: DROP VIEW v_stu_g,v_stu_c 或者 DROP VIEW v_stu_g DROP VIEW v_stu_c (12) 分别使用SQL Server管理平台和Transact-SQL语句为studentsdb
(4) 使用视图v_stu_g查询学号为'0001'的学生的所有课程与成绩,效果 如下图所示。
答:select * from v_stu_g where 学号='0001'
(5) 分别使用SQL Server管理平台和Transact-SQL语句修改视图
v_stu_c,使之显示学号、姓名、每个学生所学课程数目。
答:exec sp_rename v_stu_i,v_stu_info
(8) 利用视图v_stu_info为student_info表添加一行数据:学号为 '0015'、姓名为'陈婷'、性别为'女'。
答:insert into v_stu_info values ('0015','陈婷','女')
(6) 使用Transact-SQL语句ALTER VIEW修改视图v_stu_i,使其具有列
名学号、姓名、性别。 答: alter view v_stu_i as select 学号,姓名,性别 from student_info; go
(7) 使用系统存储过程sp_rename将视图v_stu_i更名为v_stu_info。
alter table curriculum alter column 课程编号 nchar(4) not null alter table curriculum add constraint pk_课程编号 primary key (课程编 号);
(13) 使用SQL Server管理平台按curriculum表的'课程编号'列创建唯一 性索引。
CREATE UNIQUE INDEX 课程编号_唯一索引 ON curriculum(课程编号); GO
(14) 分别使用SQL Server管理平台和Transact-SQL语句为grade表的' 分数'字段创建一个非聚集索引,命名为grade_index。
答:CREATE NONCLUSTERED INDEX grade_index ON grade(分数)
相关文档
最新文档