视图和索引(数据库实验4)
实验四视图和索引的使用
实验四视图和索引的使用
实验四视图和索引的使用
一、实验目的
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、惟一索引的含义是什么?。
实验训练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.索引的建立和删除操作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_A VG(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,将“汪丹”的名字修改为“王丹”,是否可以实现,请说明原因。
数据库实验四 视图与索引
实验4 视图与索引一、实验目的1.本实验的目的是使学生掌握视图与索引的使用方法,加深对视图与索引作用的的理解。
2.通过自行设计视图与索引,加强学生的数据库设计能力。
二、实验内容1.索引的定义和维护1)建立唯一索引,测试插入、修改记录时所受的影响。
2)建立聚簇索引,比较建立前后的记录顺序变化。
3)建立多重索引,观察执行select语句查询的结果记录顺序。
4)删除相关索引。
2.视图的定义、查询和更新1)为学生选课系统从不同用户角度出发设计相应的视图。
2)利用视图进行相关查询。
3)利用视图进行更新,注意哪些视图是不可更新的。
三、实验原理1.建立索引语句CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);⏹用<表名>指定要建索引的基本表名字⏹索引可以建立在该表的一列或多列上,各列名之间用逗号分隔⏹用<次序>指定索引值的排列次序,升序:ASC,降序:DESC。
缺省值:ASC⏹UNIQUE表明此索引的每一个索引值只对应唯一的数据记录⏹CLUSTER表示要建立的索引是聚簇索引(CLUSTERED)HAVING短语:筛选出只有满足指定条件的组⏹ORDER BY子句:对查询结果表按指定列值的升序或降序排序2.建立视图语句CREATE VIEW <视图名> [(<列名> [,<列名>]…)]AS <子查询> [WITH CHECK OPTION]四、实验步骤按实验目的和内容自行设计。
五、实验报告要求1)写出本实验中用到的SQL语句的使用说明;2)对每一实验结果进行分析;3)记录在查询实验中遇到的典型问题及你所采取的解决方法;。
数据库原理与应用课程实验(3-4)
(6)查询教育类和清华北京出版社出版的图书。
五、注意事项
(1)注意多表查询时连接方式。
(2)注意GROUP BY中字段用法
六、思考题
嵌套查询中“=”和“In”用法区别。
学生姓名
邱艳
实验日期
2015-5-27
实验名称
视图、索引
实验成绩
一、实验目的
SELECT [ALL|DISTINCT] <目标列组>
[INTO <新表名>]
FROM <表名或视图名>
[WHERE <查询条件>]
[GROUP BY <分列组> [HAVING <组选择条件>]]
[ BY <排序列> [ASC|DESC]]
功能:从指定的基本表或视图中,找出满足条件的记录数据,并对它们进行分组、统计、排序和投
(1)创建一个读者_View.
(2)创建一个借阅_计算机图书视图。
(3)创建一个图书_index,按图书名称升序排列。
(4)删除所有索引和视图。
四、实验步骤及运行结果
(1)创建一个读者_View.
(2)创建一个借阅_计算机图书视图。
(3)创建一个图书_index,按图书名称升序排列。
(4)删除所有索引和视图。
(6)查询计算机类和机械工业出版社出版的图书。
四、实验步骤及运行结果
(1)查询江苏理工学院学生生的借书证号和姓名。
(2)查询江苏理工学院学生的姓名、所借图书的名称以及出版社。
(3)查询图书类别,要求类别中最高图书的定价不低于全部按类别分组的平均定价的2倍。
数据库实验报告 索引和视图
西北师范大学计算机科学与工程学院学生实验报告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实验结果:实验总结:通过本次实验掌握了索引、统计信息和视图等数据库对象的基本概念和基本操作。
数据库视图及索引操作实验4
数据库原理及应用实验报告
实验名称数据库视图及索引的操作实验室502 实验日期
修改:在查询数据库中输入语句:
use 学生课程
go
alter view 数学系学生视图
as
select * from 学生where 性别='男' ,并运行如图
在学生表中的姓名和专业上建立唯一性索引和在学生表的姓名列上建立非聚集索引。
建立非聚集索引:
use 学生课程
go
create nonclustered index index_学生姓名on 学生(姓名)
五、调试过程及实验结果(详细记录程序在调试过程中出现的问题及解决方法;
记录程序执行的结果)
问题一:在视图中选择相应的属性时,遇到要添加函数属性,不能直接在表中直接点击,然后在SQL语句栏修改并添加相应的语句使之符合题意,题目中没有直接给出要分组,由于我没有分组,在运行时提示要分组,根据提示最后成功的运行视图。
问题二:聚集索引和非聚集索引的差别:聚集索引会对表和视图进行物理排序,所以这种索引对查询非常有效,在表和视图中只能有一个聚集索引。
键约束时,如果表中没有聚集索引,SQLServer会用主键列作为聚集索引键,可以在表的任何列或列的组合上建立索引,实际应用中一般为定义成主键约束的列建立聚集索引,而非聚集索引不会对表和视图进行物理排序,
存在聚集索引,则表是未排序的,在表或视图中,最多可以建立。
实验四 视图和索引
实验四视图和索引班级学号姓名一、实验目的使学生掌握SQL SERVER中的视图创建、查看、修改和删除的方法;索引的创建和删除方法二、实验内容在学生-课程数据库中(1)用图形工具和T-SQL两种方法创建视图,取名为view_stu_grade,要求查看学生的学号,姓名,课程名和成绩。
(2)若发现视图定义的结构不能很好满足要求,还可以对它进行修改。
(3)删除视图(4)尝试分别为student表的每一个属性列添加一个惟一索引,将出现的现象和原因分析一下。
(5)删除索引三、实验过程(1)用图形工具和T-SQL两种方法创建视图,取名为view_stu_grade,要求查看学生的学号,姓名,课程名和成绩。
①使用图形工具②使用T-SQL语句③ 视图(2)若发现视图定义的结构不能很好满足要求,还可以对它进行修改。
如需要修改则点击视图选中view_stu_grade右键修改(3)删除视图①图形工具②T-SQL语句(4)尝试分别为student表的每一个属性列添加一个惟一索引,将出现的现象和原因分析一下。
①选中Student表打开索引,右键新建索引,如图操作②创建索引问题1(未选择要添加到索引键的表列)解决办法问题2(记录相同不能建立唯一索引)解决办法:不建立唯一结果(5)删除索引①图形工具②T-SQL语句四、实验总结通过这节课练习,我进一步掌握了SQL SERVER中的视图创建、查看、修改和删除的方法以及索引的创建和删除方法,其实视图就是表的一个缩影,如果表的基本操作能够熟练运用的话,那视图也就不再话下,知识真的是相通的。
数据库实验报告:视图 和索引
一、实验步骤(一)附加上次实验所创建的数据库“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”视图的定义信息和依赖的对象。
数据库原理索引视图实验报告
数据库组成原理实验报告题目:索引、视图的定义院系:计算机科学与工程学院班级:姓名:学号:一、实验题目索引、视图的定义二、实验日期2014年10月25日三、实验目的及要求掌握嵌套查询语句的运用,掌握使用T -SQL语句创建视图的方法,包括视图的建立、删除、修改;了解如何应用视图有选择地查看所需数据,并熟悉通过视图更改数据表中数据的方法。
掌握创建索引的方法。
四、实验环境Sqlserver2008,windows xp。
五、实验内容在数据库TestDB中,基于表"项目数据表"和"员工数据表"创建视图,要求:(1)视图名为"员工项目"。
(2)包含字段"编号"、"姓名"、"名称"和"开始日期"。
(3)字段别名分别是"员工编号"、”员工姓名"、"项目名称"、"项目开始日期"。
六、实验步骤在数据库TestDB中,基于表"项目数据表"和"员工数据表"创建视图,要求为:(1)视图名为"员工项目"。
(2)包含字段"编号"、"姓名"、"名称"和"开始日期"。
(3)字段别名分别是"员工编号"、”员工姓名"、"项目名称"、"项目开始日期"。
(1)打开查询分析器。
在查询窗口书写CREATE VIEW语句创建视图,并指定字段别名:USE TestDBGOCREATE VIEW员工项目(员工编号,员工姓名,项目名称,项目开始日期) ASSELECT a·编号,a·姓名,b·名称,b·开始日期,FROM员工数据表AS a INNER JOIN项目数据表AS bON a·编号=b·负责人WHERE a·编号=b·负责人GO(2)使用INSERT语句通过视图向员工数据表中添加一条记录,要求"姓名"字段值为"马中兴"。
实验报告四 索引和视图
实验四索引和视图一、实验学时2学时二、实验目的(1)理解索引的概念与类型。
(2)掌握使用企业管理器创建与维护索引的方法。
(3)掌握T-SQL语句创建与维护索引的方法。
(4)理解视图的概念。
(5)掌握视图创建、更改的方法。
(6)掌握用视图管理数据的方法。
三、实验要求(1)硬件设备:奔腾II或奔腾II以上计算机,局域网。
SERVER、WINDOWS7、XP、WINDOWS9X/NT、WINDOWS(2)软件环境:WINDOWSSQL SERVER 2000/2005/2008中文版企业版或标准版。
(3)实验课前预习,课后及时完成实验内容。
(4)实验过程及记录按题目格式要求填写代码清单。
四、实验内容(一)索引索引分为两种:聚簇索引和非聚簇索引。
每张表只能有一个聚簇索引。
创建索引时的缺省设置是非聚簇索引。
1.使用企业管理器创建、管理索引(1)创建索引1)为Student表创建一个以Sno为索引关键字的惟一聚簇索引。
(若原已有,请删除,索引名为Sno_index)(提示:选择表后点击鼠标右键,选“设计”,窗口空白区域点击鼠标右键,选“索引/键”)基本步骤:2)为Student表创建以Sname,Sex为索引关键字的非聚簇索引(对Sname 以升序来排列,Sex以降序排列,并设置填充因子为70%)。
索引名为:SS_index。
(提示:填充因子为索引创建时索引里的数据页被填充的数量)基本步骤:(2)重命名索引将索引文件Sno_index重新命名为Sno_index1。
基本步骤:(3)删除索引将索引文件Sno_index1删除。
基本步骤:2.使用T-SQL语句创建、管理索引(1)创建索引1)为SC表创建一个非聚集索引Grade_index,索引关键字为Grade,升序,填充因子为80%。
(提示:with fillfactor=)T-SQL语句:create nonclustered index Grade_indexon SC(Grade)with fillfactor=80;2)为SC表创建一个唯一性聚集索引SC_index,索引关键字为Sno,Cno。
视图和索引(数据库实验4)
数据库前提取试验真验报告之阳早格格创做真验四视图战索引班级:惠普尝试142教号:1408090213姓名:闫伟明日期:2016-11-131 真验手段:1)掌握SQL举止视图创造的要领;2)掌握SQL举止视图革新的要领,明白视图革新受限的本果;3)掌握SQL举止索引创造及简略的要领.2 真验仄台:收配系统:Windows xp.真验环境:SQL Server 2000以上版本.3 真验真质取步调利用真验一创造的sch_id数据库完毕下列真验真质.1.定义视图V_TCS(定义时没有加with check option),存搁局部估计机系熏陶的疑息.视图定义代码:CREATEVIEW 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,存搁部分西席的西席号,西席姓名,西席报答(人为+岗位津揭),职称疑息.视图定义代码:CREATEVIEW V_sal ASSELECT tno西席号,tn西席姓名,sal+comm西席报答,prof收撑疑息FROM T视图查询语句取查询截止截图:SELECT*FROM V_sal3.背V_TCS中拔出一条估计机博业西席的新记录,并查询V_TCS视图的局部记录.视图革新代码:INSERTINTO V_TCSSELECT'T10','良瑗','女',20,'道师',6000,8000,D.dnoFROM DWHERE D.dn='估计机'视图查询语句取查询截止截图:SELECT*FROM V_TCS4.背V_TCS中拔出一条疑息博业西席的新记录,并查询V_TCS视图的局部记录.视图革新代码:INSERTINTO V_TCSSELECT'T11','百里登风','男',21,'道师',6000,8000,D.dnoFROM DWHERE D.dn='疑息'视图查询语句取查询截止截图:SELECT*FROM V_TCSSELECT*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正在举止数据革新时的没有共.视图定义代码:CREATEVIEW V_TCS_ck ASSELECT tno,tn,sex,age,prof,sal,comm,T.dnoFROM T,DWHERE T.dno=D.dno AND D.dn='估计机'WITHCHECKOPTION视图革新对于比真验代码及运止截止截图:INSERTINTO V_TCS_ckSELECT'T12','良莠','女',20,'道师',4000,4000,D.dnoFROM DWHERE D.dn='估计机'--2.没有克没有及拔出(视图CHECK OPTION拘束)INSERTINTO V_TCS_ckSELECT'T13','天明','男',25,'道师',4000,4000,D.dnoFROM DWHERE D.dn='疑息'7.正在课程C表的课程名属性上按落序创造唯一索引I_cn.索引定义代码:CREATEINDEX I_cn ON C(cn DESC)运止截止截图:8.简略C表上的索引I_cn.索引简略代码:DROPINDEX C.I_cn运止截止截图:4 深进思索取计划1)请先自己定义一个视图,使定义该视图的查询中使用连交.再革新该视图,瞅察视图革新受限情况.--1.定义:CREATEVIEW V_SC ASSELECT sn,S.sno,cn,scoreFROM S,C,SCWHERE S.sno=SC.sno AND o=o--2.查询:SELECT*FROM V_SC--3.均无法拔出(拔出做用到多弛表):INSERTINTO V_SC VALUES('笑笑','S1','JAVA',99)INSERTINTO V_SC VALUES('笑笑','S1','RUBY',99)INSERTINTO V_SC VALUES('良垣','S15','JAVA',99)INSERTINTO 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列的NOTNULL拘束):UPDATE V_SC SET cn=NULL WHERE score ISNULL2)请先自己定义一个视图,使定义该视图的查询戴分组战集函数.再革新该视图,瞅察视图革新受限情况.--1.定义:CREATEVIEW V_SC_gp ASSELECT sn,S.sno,AVG(score)avg_scoreFROM S,C,SCWHERE S.sno=SC.sno AND o=oGROUPBY sn,S.sno--2.查询:SELECT*FROM V_SC_gp--3.无法拔出:INSERTINTO 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='小明'。
数据库原理及应用.实验4.视图和索引的创建和使用
数据库原理及应⽤.实验4.视图和索引的创建和使⽤实验报告 课程名称:数据库原理及应⽤ 实验项⽬名称:视图和索引的创建和使⽤ 实验时间:2021年5⽉10⽇实验⽬的: (1)掌握创建视图的SQL语句的⽤法。
(2)掌握修改视图的⽅法。
(3)熟悉视图更新与基本表更新的区别与联系;认识视图的作⽤。
(4)熟悉索引的作⽤,以及不同类型索引的区别。
(5)掌握SQL语句对索引的创建使⽤和删除索引实验环境: MySQL、SQLyog实验内容及过程:⼀、创建课本P79页的学⽣-课程数据库,完成以下实验内容:复制DROP DATABASE STCREATE DATABASE STUSE STCREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) UNIQUE,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20));CREATE TABLE Course(Cno CHAR(4) PRIMARY KEY,Cname CHAR(40) NOT NULL,Cpno CHAR(4),Ccredit SMALLINT#FOREIGN KEY (Cpno) REFERENCES Course(Cno));CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY (Sno,Cno),FOREIGN KEY (Sno) REFERENCES Student(Sno),FOREIGN KEY (Cno) REFERENCES Course(Cno));INSERT Student(Sno, Sname, Ssex, Sage, Sdept)VALUES (201215121,'李勇','男',20,'CS'),(201215122,'刘晨','⼥',19,'CS'),(201215123,'王敏','⼥',18,'MA'),(201215125,'张⽴','男',19,'IS')INSERT Course(Cno,Cname,Cpno,Ccredit)VALUES ('1','数据库','5',4),('2','数学',' ',2),('3','信息系统','1',4),('4','操作系统','6',3),('5','数据结构','7',4),('6','数据处理',' ',2),('7','PASCAL语⾔','6',4)INSERT SC(Sno, Cno, Grade)VALUES (201215121,1,92),(201215121,2,85),(201215121,3,88),(201215122,2,90),(201215122,3,80)定义信息系学⽣基本情况视图V_IS,并查看视图结构,通过该视图可以将其他系学⽣信息屏蔽掉。
实验训练4视图和索引的构建与使用
实验训练4:视图和索引的构建与使用实验目的:1. 了解视图和索引的概念和作用;2. 掌握创建视图和索引的语法和方法;3. 掌握使用视图和索引进行数据查询的方法。
实验环境:MySQL数据库。
实验内容:1. 创建视图视图是一种虚拟表,它是根据SQL 查询语句所定义的结果集生成的。
视图并不存储数据,而是根据需要从基本表中获取数据。
视图的作用是简化常用查询操作,使查询语句更加简洁明了。
创建视图的语法如下:```CREATE VIEW view_name ASSELECT column1, column2, ...FROM table_nameWHERE condition;```例如,我们可以创建一个视图来显示学生的姓名和成绩:```CREATE VIEW student_score ASSELECT name, scoreFROM students;```2. 使用视图查询数据使用视图进行查询时,可以像查询普通表一样进行查询操作。
例如,我们可以查询学生的姓名和成绩:```SELECT * FROM student_score;```3. 创建索引索引是一种数据结构,用于提高数据的查询效率。
索引可以加快查询操作的速度,但会降低插入和更新操作的速度。
通常,我们会在经常使用的列上创建索引,以提高查询效率。
创建索引的语法如下:```CREATE INDEX index_nameON table_name (column1, column2, ...);```例如,我们可以在学生表的姓名列上创建索引:```CREATE INDEX idx_nameON students (name);```4. 使用索引查询数据使用索引进行查询时,可以通过查询计划来查看是否使用了索引。
例如,我们可以查询姓名为张三的学生:```SELECT * FROM students WHERE name = '张三';```可以通过EXPLAIN 命令查看查询计划:```EXPLAIN SELECT * FROM students WHERE name = '张三';```如果查询计划中出现了Using index,则表示使用了索引。
数据库原理实验报告-实验四-视图与索引
一、实验内容、步骤以及结果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触发器实现)。
5.用图形用户界面对Student数据库中C表的Cno字段创建一个降序排列的唯一索引,索引名称IX_CNo。
- 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 cn=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='小明'。