视图和索引(数据库实验4)
南昌大学计算机数据库实验四_索引和视图

南昌大学计算机数据库实验四_索引和视图实验四索引和视图学号:6100410235 姓名:郑俊班级:计科103班实验日期:2012-11-15一实验目的1、掌握创建视图的T-SQL语句的用法2、掌握使用SQL Server Management Studio 创建视图和索引的方法3、掌握查看视图和索引的系统存储过程的用法4、掌握修改视图的方法5、掌握创建索引的命令二实验内容1.建立计算机系学生视图,该视图包含学生的学号、姓名和出生日期信息并查看视图定义use[学生情况]gocreate view CS_Studentasselect学号,姓名,出生日期from学生where系别='计算机'2.建立学生表中全体学生年龄的视图,该视图包含学生的学号、姓名、和年龄信息use[学生情况]gocreate view Sage_Studentasselect学号,姓名,2012-year(出生日期)年龄from学生3建立选修“数据库”的学生的视图,该视图包含学生的学号和姓名信息use[学生情况]gocreate view数据库_Studentasselect学生.学号,姓名from学生,课程注册,学期成绩where学生.学号=学期成绩.学号and课程注册.课程编号=学期成绩.课程编号and课程名称='数据库'4.建立学生成绩视图,该视图包含学生的学号、姓名、课程名称和成绩信息,并进行加密use[学生情况]gocreate view学生成绩with encryptionasselect学生.学号,姓名,课程注册.课程名称,学期成绩.成绩from学生,课程注册,学期成绩where学生.学号=学期成绩.学号and课程注册.课程编号=学期成绩.课程编号5.修改题目4中的学生成绩视图,该视图包含学生的学号、姓名、课程名称、成绩和班级信息use[学生情况]goalter view学生成绩(学号,姓名,课程名称,成绩,班别)with encryptionasselect学生.学号,姓名,课程注册.课程名称,学期成绩.成绩,学生.班别from学生,课程注册,学期成绩where学生.学号=学期成绩.学号and课程注册.课程编号=学期成绩.课程编号6.在数据库中,为“课程”表创建一个基于“课程号,课程名称”组合列的非聚集、复合索引khh_kcmc_indexuse[学生情况]gocreate unique index khh_kcmc_index on课程注册(课程编号,课程名称)7.查看学生表的索引8.建立学生表的姓名唯一性索引,并且填充因子为60%use[学生情况]gocreate unique index khh_kcmc_index on学生(姓名)with fillfactor=603.实验思考(1)是否可以通过视图v_stu_g修改grade表中学号列数据?答:不能(2)比较视图和基表操作表中数据的异同。
视图和索引(数据库实验4)

数据库基础与实践实验报告实验四视图和索引班级:惠普测试142学号:**********姓名:***日期:2016-11-131 实验目的:1)掌握SQL进行视图创建的方法;2)掌握SQL进行视图更新的方法,理解视图更新受限的原因;3)掌握SQL进行索引创建及删除的方法。
2 实验平台:操作系统:Windows xp。
实验环境:SQL Server 2000以上版本。
3 实验内容与步骤利用实验一创建的sch_id数据库完成下列实验内容。
1.定义视图V_TCS(定义时不加with check option),存放全部计算机系老师的信息。
视图定义代码:CREATE VIEW V_TCS ASSELECT tno,tn,sex,age,prof,sal,comm,T.dnoFROM T,DWHERE T.dno=D.dno AND D.dn='计算机'视图查询语句与查询结果截图:SELECT*FROM V_TCS2.定义视图V_sal,存放全体教师的教师号,教师姓名,教师酬金(工资+岗位津贴),职称信息。
视图定义代码:CREATE VIEW V_sal ASSELECT tno教师号,tn教师姓名,sal+comm教师酬金,prof支撑信息FROM T视图查询语句与查询结果截图:SELECT*FROM V_sal3.向V_TCS中插入一条计算机专业教师的新记录,并查询V_TCS视图的全部记录。
视图更新代码:INSERT INTO V_TCSSELECT'T10','良瑗','女',20,'讲师',6000,8000,D.dnoFROM DWHERE D.dn='计算机'视图查询语句与查询结果截图:SELECT*FROM V_TCS4.向V_TCS中插入一条信息专业教师的新记录,并查询V_TCS视图的全部记录。
视图更新代码:INSERT INTO V_TCSSELECT'T11','百里登风','男',21,'讲师',6000,8000,D.dnoFROM DWHERE D.dn='信息'视图查询语句与查询结果截图:SELECT*FROM V_TCSSELECT*FROM T WHERE tno='T11'5.修改V_TCS中的记录,使得编号为t2的教师的职称为副教授。
实验四视图和索引的使用

实验四视图和索引的使用
实验四视图和索引的使用
一、实验目的
1.掌握视图的创建、修改和删除
2.掌握通过视图修改表中的记录
3.掌握索引的创建、修改和删除
二、实验内容
根据实验二创建的表进行如下的操作:
1、对表S,创建一个专业为“计算机应用”的视图,视图名为STUDENT_SDEPT1。
2、对表S,创建一个专业为“计算机软件”的视图,视图名为STUDENT_SDEPT2。
3、建立一个视图名S_C_SC,视图里包括每个学生每一门课的成绩(学号、
姓名、课程名和成绩)。
4、删除视图STUDENT_SDEPT2。
5、通过视图STUDENT_SDEPT1,往S表中插入一条记录,内容为(“9901”,
“王套”,22“男”,“计算机应用”)。
6、对表S,按SNAME字段创建一个惟一非聚集索引,索引名为INDEX_SNO。
7、对表C,按CNAME创建一个惟一聚集索引,索引名COURSE_INDEXCNO。
8、对表S,按SEX和SNAME字段创建一个复合索引,索引名为INDEX_SEX_SNAME。
9、删除索引INDEX_SEX_SNAME、COURSE_INDEXCNO。
三、思考题:
1、视图与表的区别是什么?
2、视图的作用是什么?
3、索引的作用?
4、惟一索引的含义是什么?。
实验四 视图、索引的创建与管理

实验四视图、索引的创建与管理一、实验目的1.了解视图、索引的概念及作用。
2.掌握视图和数据表的区别。
3.掌握索引的分类。
4.掌握创建视图、索引的方法。
5.掌握查看和修改视图、索引的方法。
6.掌握删除视图、索引的方法。
二、实验内容视图实验内容:1.新建BOOKS数据库,使用管理控制台创建名称为“图书借阅信息表”的数据表,表2.在3.使用管理控制台创建一个名为“读者借阅信息_VIEW”的视图,要求显示所在部门是“计算机系”或“外语系”的读者借阅信息,包括“读者编号”、“姓名”、“所在部门”、“图书编码”和“图书状态”五个字段。
4.使用SQL语句创建一个名为“计算机系续借信息_VIEW”的视图,要求显示计算机系读者2010-10-1以后续借的图书信息,包括“姓名”、“图书编码”和“借阅日期”三个字段。
5.使用管理控制台查看“读者借阅信息_VIEW”视图的定义信息和依赖的对象。
6.使用系统存储过程查看“计算机系续借信息_VIEW”视图的定义信息和依赖的对象。
7.使用管理控制台修改“读者借阅信息_VIEW”视图,要求只显示计算机系男读者借阅信息,包括“读者编号”、“姓名”、“所在部门”、“图书编码”和“图书状态”五个字段。
8.使用SQL语言修改“计算机系续借信息_VIEW”视图,要求显示计算机系或外语系读者2006-1-1以后续借的图书信息,包括“姓名”、“所在部门”、“图书编码”和“借阅日期”四个字段。
9.分别使用管理控制台和SQL语言向视图“读者借阅信息_VIEW”中插入一条记录,看操作能否成功,为什么?10.使用管理控制台删除“读者借阅信息_VIEW”视图。
11.使用SQL语言删除“计算机系续借信息_VIEW”视图。
索引实验内容:12.使用管理控制台创建一个新的索引,索引名称为“IX_姓名_所在部门”,使用的数据表是“读者基本信息表”,所用的字段包括“姓名”和“所在部门”两个字段。
13.使用SQL语句创建一个新的索引,索引名称为“IX_图书状态_借阅日期”,使用的数据表是“图书借阅信息表”,所用的字段包括“图书状态”和“借阅日期”两个字段。
实验训练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语句来创建索引。
数据库原理实验报告-实验四-视图与索引

《数据库原理》实验报告题目:实验四视图与索引学号班级日期2016.10.20一、实验内容、步骤以及结果1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是1996年出生的学生的视图,视图中包括学号,性别,成绩三个信息。
(5分)2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:V_SPJ)(10分,每种方法5分)。
--第一种方法CREATE VIEW V_SPJ ASSELECT sno,pno,qty FROM SPJWHERE jno=(SELECT jno FROM JWHERE jname ='');GO--删除建好的视图DROP VIEW V_SPJ;GO--第二种方法CREATE VIEW V_SPJ ASSELECT sno,pno,qtyFROM SPJ,JWHERE J.jno=SPJ.jno AND J.jname='';3.用SQL语句完成第五版教材第三章第11题中的视图查询(10分,每小题5分)。
11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。
针对该视图VSP完成下列查询:(1)找出三建工程项目使用的各种零件代码及其数量。
(2)找出供应商S1的供应情况。
4.用SQL语句完成视图的数据更新。
(15分,每题5分)(1)给视图V_SPJ中增加一条数据。
提示:-SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由于JNO 为NULL,所以视图中没有该条数据。
-SPJ表中JNO不能为空时,可以使用instead of触发器实现。
(2)修改视图V_SPJ中的任意一条数据的供应数量。
(3)删除视图V_SPJ中的任意一条数据(注意所创建视图可以视图消解时,才能正常删除,否则会删除失败;也可以考虑用instead of触发器实现)。
数据库原理之视图与索引的实验报告

一、实验名称
视图与索引
二实验目的
1.学会使用企业管理器建立视图与索引
2.掌握使用SQL语句建立视图与索引
三实验内容
1.使用企业管理器建立视图索引
2.使用SQL语句建立视图索引
四实验准备
1.复习与本次实验内容相关知识
2.对本次实验中要求自己完成的部分做好准备
五实验步骤
1.用企业管理器建立一个基于学生表、课程表、成绩表的视图,要求该视图
显示学号、姓名、课程、成绩
用查询分析器建立一个基于学生表、班级表的学生视图
自己写一个SQL语句建立一个基于课程表的视图(V_COURSES),要求显示
课程编号、课程名、学分。
查看索引
2.为学生表按班级建立一个非簇集索引FK_U_STUDENTS,操作过程如下
实验心得
总的来说,这次实验因为在上面的几次试验中取得的一些经验,在做实验的时候,也不觉得有多么大的困难了。
相反,感觉有点轻车熟路。
这次实验的目的是学会使用企业管理器建立视图与索引,掌握使用SQL语句建立视图与索引。
在做实验的时候遇到的问题是发现自己建立的视图遇到与表的内容不符的情况,这是由于我对上次表的内容有些模糊,而导致后面做实验出现问题。
在查询了以前建的表后,我又认真做了修改,使得在建立视图的时候能够与表建立紧密的联系,从而不会孤立表的建立。
到了后期,视图的建立也简单多了。
其实,在我做完这个实验之后,明白这次实验都主要是围绕SQL语句,对于语句的熟悉和掌握,有助于我们对数据的应用。
在以后的工作中,也能够发挥到学到知识的作用。
实 验 四 视图索引和数据更新

实验四视图索引和数据更新一、实验目的:熟练掌握索引的建立与删除的方法,SQL的应用,数据插入、修改和删除以及视图的创建及使用,为后续学习作准备。
二、实验属性(验证性)1.了解并掌握SQL企业控制管理器的使用。
2. 掌握数据插入、修改、更新和删除。
3.掌握索引、视图的创建。
4. 掌握索引、视图的删除。
三、实验仪器环境与要求PC机,SQL SERVER2005。
四、实验要求1.复习教材第三章,熟悉SQL语句。
2.能够熟练掌握数据插入、修改、更新和和删除语句的一般格式及使用方法。
3.掌握索引的建立和删除方法。
4.掌握视图建立、修改和删除;5.掌握视图查询。
6.五、实验原理SQL语言基本应用。
六、实验步骤:(1)启动SQL SERVER。
(2) 附加数据库;(3) 验证如下例子:1 建立索引1. 为学生选课数据库中的Student,Course,Sc三个表建立索引。
其中Student表按“学号”升序建唯一索引C1,Course表按“课程名”降序建唯一索引C2,Sc表按“学号”升序和“课程号”升序建唯一索引C3。
CREATE UNIQUE INDEX C1ON STUDENT(SNO);CREATE UNIQUE INDEX C2ON COURSE(CNAME DESC);CREATE UNIQUE INDEX C3ON SC(SNO,CNO);2. 在基本表Student的Sname(姓名)列上建立一个聚簇索引c4,而且Student中的物理记录将按照Sname值的升序存放。
CREATE CLUSTER INDEX C4ON STUDENT(ANAME)2 删除索引3. 删除以上所建索引C1、C2、C3。
DROP INDEX STUDENT.C1;DROP INDEX COURSE.C2;DROP INDEX SC.C3;3 建立视图4. 建立数学系学生的视图math_stu,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
. . .
数据库基础与实践实验报告实验四视图和索引
班级:惠普测试142
学号:1408090213
:闫伟明
日期:2016-11-13
1 实验目的:
1)掌握SQL进行视图创建的方法;
2)掌握SQL进行视图更新的方法,理解视图更新受限的原因;
3)掌握SQL进行索引创建及删除的方法。
2 实验平台:
操作系统:Windows xp。
实验环境:SQL Server 2000以上版本。
3 实验容与步骤
利用实验一创建的sch_id数据库完成下列实验容。
1.定义视图V_TCS(定义时不加with check option),存放全部计算机系老师的信息。
视图定义代码:
CREATE VIEW V_TCS AS
SELECT tno,tn,sex,age,prof,sal,comm,T.dno
FROM T,D
WHERE T.dno=D.dno AND D.dn='计算机'
视图查询语句与查询结果截图:
SELECT*FROM V_TCS
2.定义视图V_sal,存放全体教师的教师号,教师,教师酬金(工资+岗位津贴),职称信息。
视图定义代码:
CREATE VIEW V_sal AS
SELECT tno教师号,tn教师,sal+comm教师酬金,prof支撑信息
FROM T
视图查询语句与查询结果截图:
SELECT*FROM V_sal
3.向V_TCS中插入一条计算机专业教师的新记录,并查询V_TCS视图的全部记录。
视图更新代码:
INSERT INTO V_TCS
SELECT'T10','良瑗','女',20,'讲师',6000,8000,D.dno
FROM D
WHERE D.dn='计算机'
视图查询语句与查询结果截图:
SELECT*FROM V_TCS
4.向V_TCS中插入一条信息专业教师的新记录,并查询V_TCS视图的全部记录。
视图更新代码:
INSERT INTO V_TCS
SELECT'T11','百里登风','男',21,'讲师',6000,8000,D.dno
FROM D
WHERE D.dn='信息'
视图查询语句与查询结果截图:
SELECT*FROM V_TCS
SELECT*FROM T WHERE tno='T11'
5.修改V_TCS中的记录,使得编号为t2的教师的职称为副教授。
视图更新代码:
UPDATE V_TCS SET prof='副教授'WHERE tno='T2'
视图查询语句与查询结果截图:
SELECT*FROM V_TCS WHERE tno='T2'
6.定义视图V_ TCS_ck(定义时加with check option),存放全部计算机系老师的信息,对比该视
图与V_TCS在进行数据更新时的差别。
视图定义代码:
CREATE VIEW V_TCS_ck AS SELECT tno,tn,sex,age,prof,sal,comm,T.dno
FROM T,D
WHERE T.dno=D.dno AND D.dn='计算机'
WITH CHECK OPTION
视图更新对比实验代码及运行结果截图:
--1.能插入
INSERT INTO V_TCS_ck
SELECT'T12','良莠','女',20,'讲师',4000,4000,D.dno
FROM D
WHERE D.dn='计算机'
--2.不能插入(视图CHECK OPTION约束)
INSERT INTO V_TCS_ck
SELECT'T13','天明','男',25,'讲师',4000,4000,D.dno
FROM D
WHERE D.dn='信息'
7.在课程C表的课程名属性上按降序创建唯一索引I_cn。
索引定义代码:
CREATE INDEX I_cn ON C(cn DESC)
运行结果截图:
8.删除C表上的索引I_cn。
索引删除代码:
DROP INDEX C.I_cn
运行结果截图:
4 深入思考与讨论
1)请先自己定义一个视图,使定义该视图的查询中使用连接。
再更新该视图,观察视图更新受限情况。
--1.定义:
CREATE VIEW V_SC AS
SELECT sn,S.sno,cn,score
FROM S,C,SC
WHERE S.sno=SC.sno AND o=o
--2.查询:
SELECT*FROM V_SC
--3.均无法插入(插入影响到多表):
INSERT INTO V_SC VALUES('笑笑','S1','JAVA',99) INSERT INTO V_SC VALUES('笑笑','S1','RUBY',99) INSERT INTO V_SC VALUES('良垣','S15','JAVA',99) INSERT INTO V_SC VALUES('良莠','S1','JAVA',99)
SELECT*FROM V_SC WHERE sno='S1'
--4.可以更新(修改分数只影响到SC一表):
UPDATE V_SC SET V_SC.score=99 WHERE V_='大学英语'AND V_SC.sno='S1' SELECT*FROM V_SC WHERE sno='S1'
--5.无法更新年龄(视图V_SC不包含age列):
UPDATE V_SC SET age=18 WHERE V_SC.sno='S1'
--6.无法更新,修改会影响到S和SC两表:
UPDATE V_SC SET sn='笑',score=98 WHERE V_SC.sno='S1'
--7.将成绩为NULL的课程名设为NULL,更新失败(遵守基表C的cn列的NOT NULL约束):
UPDATE V_SC SET=NULL WHERE score IS NULL
2)请先自己定义一个视图,使定义该视图的查询带分组和集函数。
再更新该视图,观察视图更新受限情况。
--1.定义:
CREATE VIEW V_SC_gp AS
SELECT sn,S.sno,AVG(score)avg_score
FROM S,C,SC
WHERE S.sno=SC.sno AND o=o
GROUP BY sn,S.sno
--2.查询:
SELECT*FROM V_SC_gp
--3.无法插入:
INSERT INTO V_SC_gp VALUES('静','S8',88)
--4.无法更新(avg_score集函数列):
UPDATE V_SC_gp SET avg_score=88 WHERE sn='小明'
--5.无法更新(视图包含聚集函数、GROUP BY子句):UPDATE V_SC_gp SET sn='小小云'WHERE sn='小明'。