数据库 实验5 视图
数据库实验5 多表查询及视图
实验五:多表查询及视图一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握数据表的连接查询、嵌套查询、集合查询的使用方法。
3.掌握创建及管理视图的方法;二、实验学时2学时三、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.掌握连接查询、嵌套查询和集合查询的语法规则;3.掌握使用界面方式和命令方式创建及管理视图;4.完成实验报告;四、实验内容1.以实验3数据库为基础,请使用T-SQL 语句实现进行以下操作:1)查询选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;2)查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;3)按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。
其中已修学分为考试已经及格的课程学分之和;4)查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;5)查询只被一名学生选修的课程的课程号、课程名;6)使用嵌套查询出选修了“数据结构”课程的学生学号和姓名;7)使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;8)使用ANY、ALL 查询,列出其他院系中比WM系所有学生年龄小的学生的姓名;9)使用集合查询查询选修1号课程同时选修2号课程的同学的学号与姓名;2.以实验数据库为基础数据,利用对象资源管理器创建以下视图:1)创建所有学生学号、姓名及年龄的信息视图v_stu_info2)创建CS系学生基本信息视图v_stu_cs3)创建选修课成绩在80分以上的学生的信息视图v_stu_80,包括学生基本情况及成绩。
3. 以实验数据库为基础数据,请使用T-SQL语句完成以下内容,并将SQL语句写在实验报告册中:1) 创建v_CS视图,包括CS系各学生的学号、姓名及年龄,要求进行修改和插入操作时仍需保证该视图只有CS系的学生;2) 创建v_CS_age20视图,包括CS系学生年龄在20岁以上的基本信息;并保证对视图文本的修改都要符合年龄大于20这个条件。
数据库实验报告视图
大连海事大学数据库原理课程实验大纲实验名称:实验五视图实验学时: 2适用专业:智能科学与技术实验环境: Microsoft SQL server 20141实验目的(1)掌握SQL视图语句的基本使用方法,如CREATE VIEW、DROP VIEW。
(2)掌握视图更新、WITH CHECK OPTION等高级功能的使用。
2实验内容2.1 掌握SQL视图语句的基本使用方法(1)创建视图(省略视图列名)。
(2)创建视图(不能省略列名的情况)。
(3)删除视图(RESTRICT / CASCADE)。
2.2 掌握视图更新和WITH CHECK OPTION的高级使用方法(1)创建视图(WITH CHECK OPTION),并利用INSERT、DELETE和UPDATE语句加以验证。
(2)创建一个行列子集可更新视图,并利用INSERT、DELETE和UPDATE语句加以验证。
(3)创建一个不可能更新的视图,并利用更新语句验证该视图不可更新。
3实验要求(1)深入复习教材第三章SQL有关视图语句。
(2)根据书上的例子,针对TPCH数据库模式设计各种视图语句,每种类型视图语句至少要设计一个,描述清楚视图要求,运行你所设计的视图语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。
也可以按照附1所列示例做实验。
(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。
(4)思考题:KingbaseES把视图的定义存储在那个系统表中?如何查看某个视图的定义?4实验步骤4.1 掌握SQL视图语句的基本使用方法(1)创建视图(省略视图列名)。
(2)创建视图(不能省略列名的情况)。
(3)删除视图(RESTRICT / CASCADE)。
4.2 掌握视图更新和WITH CHECK OPTION的高级使用方法(4)创建一个行列子集可更新视图,并利用INSERT、DELETE和UPDATE语句加以验证。
(5)创建视图(WITH CHECK OPTION),并利用INSERT、DELETE和UPDATE语句加以验证。
实验五 视图的创建和使用
实验五视图的创建和使用5.1概述5.1.1任务一理解视图的概念视图是一个虚拟表,其内容由查询定义。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据集合形式存在。
行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基表来说,视图的作用类似于筛选。
定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。
视图被定义后便存放在数据库中,对视图中的数据的操作与对表的操作一样,可以对其进行查询、修改和删除,但对数据的操作要满足一定的条件。
当对视图所看到的数据进行修改时,相应的基表的数据也会发生变化,同时,若基表的数据发生变化,这种变化也会自动地反映到视图中。
5.1.2任务二理解视图的优点用户可以根据自己的实际需要创建视图,使用视图有很多优点,主要有以下几点:1、简单性视图可以屏蔽数据的复杂性,简化用户对数据库的操作。
使用视图,用户可以不必了解数据库的结构,就可以方便地使用和管理数据。
那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
2、逻辑数据独立性视图可以使应用程序和数据库表在一定程度上独立。
如果没有视图,应用一定是建立在表上的。
有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。
3、安全性通过视图用户只能查询和修改他们所能见到的数据。
数据库中的其他数据则既看不见也取不到。
5.2创建视图创建视图的方法有三种:在创建视图前请考虑如下原则:只能在当前数据库中创建视图.视图名称必须遵循标识符的规则,且对每个用户必须为唯一.此外,该名称不得与该用户拥有的任何表的名称相同.可在其他视图和引用视图的过程之上建立视图.SQLServer 2000允许嵌套多达32级视图若要创建视图,数据库所有者必须授予用户创建视图的权限,并且用户对视图定义中所引用的表或视图要有适当的权限5.2.1任务一使用企业管理器创建视图使用企业管理器创建视图的具体操作步骤如下:1、打开企业管理器窗口,打开“新建视图”对话框。
实验五数据库的索引和视图
研究与
探讨
评语
如图,表bb多了Bb4
5.用Create View对表Bb的Bb1和Bb4建立一个视图Viewbb,字段名为Viewbb1和Viewbb2.
如图,视图viewbb已建立
6.Drop View删除视图Viewbb.
如图,viewbb已删除
7.用Create Index对表Bb的Bb3字段建立一个升序索引,索引名Indexbb.
大学实验报告五2014年4月1日专业年级2012级信计专业1班学学号201221143025成成绩姓姓名课程名称数据库管理系统实验名称数据库的索引和视图实验目的和要求掌握查询分析器中用ddl语言进行对索引视图的增加删除和改动
大学实验报告(五)
2014年4月1日
专业年级
2012级
信计专业(1)班学号201源自21143025Varchar
20
字段1
Aa2
Int
字段2
Aa3
Dec
10,2
字段3
2.用Create Table建表bb,表结构如下所示:
字段名
类型
长度
含义
Bb1
Varchar
30
字段1
Bb2
Int
字段2
Bb3
Dec
6,2
字段3
如图,表aa bb已建立完成
3.用Drop Table删除表aa.
如图,表aa已删除
4.用Alter Table修改表bb,添加一个字段Bb4,类型Varchar,长度20.
成绩
姓名
课程名称
《数据库管理系统》
实验名称
数据库的索引和视图
数据库实验 集合查询和视图的创建
南通大学数据库实验课
实验报告
学生姓名
所在院系
专业
学号
指导教师
南通大学计科院
2014年 12 月 1 日
实验五集合查询和视图的创建
一、实验目的
1.掌握集合查询涉及的SQL语句
2.掌握视图创建的SQL语句
二、实验内容
1.查询信息系的女生或者是计算机系的男生名单,输出姓名,性别,系名。
(并操作UNION)
2.查询计算机系年龄不大于20岁的学生。
(交操作INTERSECT)
3.查询计算机系年龄大于20岁的学生。
(差操作EXCEPT)
4.创建一个视图view1,要求输出学号,姓名,课程号,分数。
5.基于view1和Course查询每个人各门课程的平均分,输出学号,姓名,平均分,按平均分降序排列。
6.基于view1和Course查询每个人选课的总学分数,输出学号,姓名,总学分数。
三、总结与体会
这次实验主要是集合查询和视图的创建。
集合查询是对多个SELECT语句的结果进行集合操作,包括了交集、并集和差集,使得我们查询更为方便。
而视图是从一个或几个基本表(或视图)导出的虚表,数据库只存放视图的定义,不存放对应的数据,因此基本表中的数据变化,视图中查询出的数据也就随之变化了。
从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。
本次实验让我对视图有了更深的认识和了解,让我感受到视图的方便性与实用性,感受到合理使用视图能带来的许多好处,比如:简化用户的操作、使用户能以多种角度看待同一数据、对重构数据库提供了一定程度的逻辑独立性、对机密数据提供安全保护、更清晰的表达查询,等等。
实验 视图、索引与数据库关系图
实验名称:实验五视图、索引与数据库关系图班级学号姓名日期所在院系指导老师成绩一、试验目的使学生掌握SQL Server中的视图创建、查看、修改和删除的方法;索引的创建和删除的方法;数据库关系图的实现方法。
加深对视图和SQL Server数据库关系图的理解。
二、实验内容(1)创建、查看、修改和删除视图。
(2)创建、删除索引文件。
(3)创建数据库关系图。
三、试验步骤1)视图操作(1)创建视图。
使用SQL Server Management Studio直接创建,步骤如下:1.单击数据库前面的+号,然后再单击“学生选课”数据库前面的+号,右击“视图”,在弹出的快捷菜单中选择“新建视图”命令,弹出“添加表”对话框。
如图5.1所示图5.1 “添加表”对话框2.在“添加表”对话框中,添加视图数据来源的表,这里添加三张表,分别是student、course和sc表。
添加表后,单击添加表对话框中的“关闭”按钮,出现创建视图界面。
如图5.2所示图5.2添加字段前的效果图3.如果要在视图中显示某些表的某个字段,只需单击其字段前的复选框即可,同时在中间列中会显示该字段,在代码区中会看到具体实现的代码。
4.如果要查看视图,单击常用工具栏中的“执行”按钮,就可以看到视图的数据显示,如由字段student.sno、sname、cname、grade生成的视图效果。
如图5.3所示图5.3 生成视图效果图5.在创建视图中还可以为字段添加列名、进行排序、添加多个筛选条件。
6.单击常用工具栏中的“保存”按钮,就可以弹出保存视图提示对话框,输入视图名字即可,为view_stu_grade。
(2)修改视图。
视图创建好后,就可以利用它进行查询信息了。
如果发现视图的结构不能很好的满足要求,还可以对它进行修改。
使用SQL Server Management Studio直接修改,步骤如下:1.在SQL Server Management Studio中,选择服务器、数据库、并使数据库展开,再单击“视图”前面的+,就可以看到已存在的视图了。
实验5-视图
实验五视图1实验目的(1)掌握SQL视图语句的基本使用方法,如CREATE VIEW、DROP VIEW。
(2)掌握视图更新、WITH CHECK OPTION等高级功能的使用。
2实验内容2.1 掌握SQL视图语句的基本使用方法(1)创建视图(省略视图列名)。
(2)创建视图(不能省略列名的情况)。
(3)删除视图(RESTRICT / CASCADE)。
2.2 掌握视图更新和WITH CHECK OPTION的高级使用方法(1)创建视图(WITH CHECK OPTION),并利用INSERT、DELETE和UPDATE语句加以验证。
(2)创建一个行列子集可更新视图,并利用INSERT、DELETE和UPDATE语句加以验证。
(3)创建一个不可能更新的视图,并利用更新语句验证该视图不可更新。
3实验要求(1)深入复习教材第三章SQL有关视图语句。
(2)根据书上的例子,针对TPCH数据库模式设计各种视图语句,每种类型视图语句至少要设计一个,描述清楚视图要求,运行你所设计的视图语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。
也可以按照附1所列示例做实验。
(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。
(4)思考题:KingbaseES把视图的定义存储在那个系统表中?如何查看某个视图的定义?4实验步骤4.1 掌握SQL视图语句的基本使用方法(1)创建视图(省略视图列名)。
(2)创建视图(不能省略列名的情况)。
(3)删除视图(RESTRICT / CASCADE)。
4.2 掌握视图更新和WITH CHECK OPTION的高级使用方法(4)创建一个行列子集可更新视图,并利用INSERT、DELETE和UPDATE语句加以验证。
(5)创建视图(WITH CHECK OPTION),并利用INSERT、DELETE和UPDATE语句加以验证。
(6)创建一个不可能更新的视图,并利用更新语句验证该视图不可更新。
实验5:存储过程、触发器和视图
实验5:存储过程、触发器和视图第五周实验可编程对象(视图、存储过程和触发器)一.实验目的1.了解视图、存储过程和触发器的基本概念和使用方法。
2.学会用两种方法创建和维护视图、存储过程和触发器等数据库对象:一是在SQL Server Management Studio通过可视化操作实现,一是在查询窗口执行相关T-SQL语句实现。
二.实验环境●SQL Server Management Studio●BookStore数据库提示1:到“课程辅助材料”中下载BookStore数据库,在SQL Server中附加。
三.实验内容说明:标记为▲的是必做题目,其他为选作题目。
首先需要附加BookStore数据库。
1▲.创建视图。
(1)创建视图V_BookSell,使其包含图书销量情况。
要求显示图书代码(BookCode)、图书名称(BookName)、作者(Author)、出版社名称(Publisher)以及数量(Amount)。
(2)创建视图V_CustomerBookOrderDetail。
要求显示订单号(OrderCode)、客户名(Name)、客户等级(VIPClass)、书名(BookName)、单价(Price)、数量(Amount)、折扣(Discount)以及总价(TotalPrice=Price*Amount*Discount)。
(3)创建视图V_CustomerVIPABTotalOrder,汇总客户订单信息。
使其包含用户等级为“A”和“B”、且不姓“郭”和“刘”的客户订单信息,要求显示客户姓名(Name)以及所订图书总金额,并按所订图书总金额降序排列。
2.创建存储过程(1)▲创建存储过程proc_SearchBook,查询指定书名的图书信息。
(2)创建存储过程proc_FuzzySearchBook,实现按书名(全名或部分书名)模糊查询图书信息。
(3)创建存储过程proc_SearchCustomerMoney,查询指定客户在某一年之前的购书总金额(已知客户号和年份,输出总金额)。
实验五:数据库的视图和图表的定义及使用
在企业管理器中,展开数据库图表所属的服务器、数据库文件夹、数据库以及关系表文件夹。用鼠标右键单击要编辑的关系表,在弹出的菜单中选择“设计关系表”项,则弹出一个编辑关系表的对话框,数据库关系表中的所有操作都是在该对话框中完成的。
6、数据库图表的删除
在企业管理器中,用鼠标右键单击欲删除的数据库关系表。在弹出的菜单上选择“删除”项。在随后出现的删除对象对话框中选中关系表后,单击“删除全部”按钮,即可删除该数据库中被选中的关系表。
ifexists(select*fromsysobjectswherename='Reader')
droptableReader
go
createtableReader(
ReaderIdvarchar(50)primarykey,
Namevarchar(50),
Unitvarchar(50),
Sgenderchar(10)check(Sgender='男'orSgender='女'),
union
select'1003','200215122','2011.02.03'
union
select'1003','200215125','2011.02.03'
union
select'1006','200215126','2011.02.03'
创建视图并修改:
createviewghbas
SELECTdbo.Books.Type,Books.Press,Books.Author,Books.BookName,Books.Price,dbo.Borrow.*
数据实验5 视图
在EDUC库中以student表为基础,建立一个名为“V_计算机系学生”的视图。
在使用该视图时,将显示student表中的所有字段。
2.使用SQL语句创建视图①在查询分析器中建立一个每个学生的学号、姓名、选修的课名及成绩的视图S_C_GRADE;②建立一个所有计算机系学生的学号以及平均成绩的视图COMPUTE_AVG_GRAD。
(二)修改视图1.使用企业管理器修改视图在企业管理器中将视图COMPUTE_AVG_GRAD改成数学系的学生学号以及平均成绩的视图。
2.使用SQL语句修改视图①在查询分析器中使用更改视图的命令将上面建立的视图“V_计算机系学生”更名为“V_计算机系男生”。
(三)删除视图1.使用企业管理器删除视图用企业管理器删除视图“V_计算机系男生”。
2.使用SQL语句删除视图用SQL语句删除视图COMPUTE_AVG_GRAD。
项目二:使用视图(一)定义视图1.定义计算机系学生基本情况视图v_computer;2.将student,course,sc表中学生的学号、姓名、课程号、课程名、成绩定义为视图V_S_C_G;3.将各系学生人数,平均年龄定义为视图v_num_avg;4.定义一个反映学生出生年份的视图v_year;5.将各位学生选修课程的门数及平均成绩定义为视图v_avg_s_g;6.将各门课程的选修人数及平均成绩定义为视图v_avg_c_g。
(二)使用视图1.查询平均成绩为90分以上的学生学号、姓名和成绩;2.查询各课成绩均大于平均成绩的学生学号、姓名、课程号和成绩;(三)修改视图1.通过视图v_computer,分别将学号为“95001”和“95005”的学生姓名更改为“s1”和“s5”,并查询结果;2.通过视图v_computer,新增加一个学生记录(’s12’,’yan xi’,19,’is’),并查询结果;3.通过视图v_computer,新增加一个学生记录(’s13’,’yan xi’,19,’cs’),并查询结果;4.通过视图v_computer,删除学号为“s13”的学生信息,并查询结果;。
数据库实验五:视图的应用
数据库实验五:视图的应用一、实验目的与要求:1.实验目的(1)理解视图的概念;(2)掌握视图的使用方法。
(3)理解视图和基本表的异同之处。
2.实验要求(1)参照实验五中完成的查询,按如下要求设计和建立视图:1)基于单个表按投影操作定义视图。
2)基于单个表按选择操作定义视图。
3)基于单个表按选择和投影操作定义视图。
4)基于多个表根据连接操作定义视图。
5)基于多个表根据嵌套操作定义视图。
6)定义含有虚字段的视图。
(2)分别在定义的视图设计一些查询(包括基于视图和基本表的连接或嵌套查询)。
(3)在定义的视图上进行插入、更新和删除操作,分情况讨论哪些操作可以成功完成,哪些操作不能完成,并分析原因。
(4)在实验报告中要给出具体的视图定义要求和操作要求,并针对各种情况做出具体的分析和讨论。
二、实验内容1、实验原理(1)视图是用SQL SELECT查询定义的,创建视图命令格式如下:CREATE VIEW <视图名> AS <SELECT-查询块>(2)删除视图的命令格式如下:DROP VIEW <视图名>2、实验步骤与结果(1)调出SQL Server2005软件的用户界面,进入SQL SERVER MANAGEMENT STUDIO。
(2)输入自己编好的程序。
(3)检查已输入的程序正确与否。
(4)运行程序,并分析运行结果是否合理和正确。
在运行时要注意当输入不同的数据时所得到的结果是否正确。
(5)输出程序清单和运行结果。
(1)参照实验五中完成的查询,按如下要求设计和建立视图:1)基于单个表按投影操作定义视图。
create view v asselect教师编号,姓名from教师create view v_order asselect*from教师where职称='教授'3)基于单个表按选择和投影操作定义视图。
create view v_cuss asselect教师编号,姓名,职称from教师where职称='教授'4)基于多个表根据连接操作定义视图。
实验五 视图的应用完整版 pdf
实验五视图的应用5-1在实验二建立的基础表的基础上,设计和建立视图1、投影create view投影asselect教师编号,姓名from教师;2、选择create view选择asselect*from教师where职称='教授';3、投影和选择select*from投影和选择;select*from投影join选择on投影.教师编号=选择.教师编号; select*from投影where投影.教师编号in(select教师编号from虚字段where工资>=200)create view连接asselect教师编号,职称,课程编号,课程名称from教师join课程on教师.教师编号=课程编号;5、嵌套create view嵌套asselect*from教师where教师编号in(select责任教师from课程where性别='男')create view虚字段(教师编号,姓名,工资)as select i.教师编号,i.姓名,i.工资from教师i,课程jwhere i.教师编号=j.责任教师;5-2分别在定义的视图上设计一些查询一般简单查询:select*from投影和选择;连接查询:select*from投影join选择on投影.教师编号=选择.教师编号;嵌套查询:select*from投影where投影.教师编号in(select教师编号from虚字段where工资>=200)^_^^_^^_^^_^^_^^_^^_^^_^^_^_^^_^宁十一^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^_^^_^^_^5-3在不同的视图上分别设计一些插入、更新和删除操作,分情况讨论哪些操作可以完成,那些操作不能完成,并分析原因1、投影insert into投影values('56','吴宁');select*from投影;update投影set姓名='王宁'where教师编号='56';select*from投影;delete投影where教师编号='56';select*from投影;投影操作中:插入、更新、删除都正常2、选择insert into选择values('25','9','钱小2','女','教授','软件','10'); select*from选择;select*from教师;update选择set姓名='钱小二'where教师编号='25'; select*from选择;select*from教师;delete选择where教师编号='25';select*from选择;select*from教师;选择操作中:插入、更新、删除都正常3、投影和选择insert into投影和选择values('13','清河');select*from投影和选择;select*from教师;update投影和选择set姓名='qh'where教师编号='19'; update投影和选择set姓名='zc';delete投影和选择where教师编号='19';delete投影和选择where教师编号='2';select*from投影和选择;投影和选择操作中:更新、删除可正常执行插入操作时,插入的数据没有进入视图中,而是仅仅进入视图对应的表中Select*from投影和选择/表名,可知4、连接insert into连接values('15','副教授','12','java');update连接set职称='教授'where教师编号='2';select*from连接;delete连接where教师编号='2';连接操作中:更新可正常执行,而使用插入、删除操作时,出现提示:不可更新,因为修改会影响多个基表5、嵌套insert into嵌套values('24','2','cd','男','教授','软件','100');select*from嵌套;select*from教师;update嵌套set姓名='dc'where教师编号='24';select*from教师;update嵌套set姓名='dc'where教师编号='8';select*from嵌套;select*from教师;delete嵌套where姓名='dc';select*from嵌套;select*from教师;嵌套操作中:插入的数据仅仅进入视图对应的表中,没有在视图中体现;更新、删除可正常操作6、虚字段insert into虚字段values('32','xx','200');select*from虚字段;select*from教师;update虚字段set姓名='b b q'where教师编号='2';select*from虚字段;select*from教师;delete虚字段where教师编号='5';虚字段操作中:插入仅仅进入表中,不进入视图中;删除时显示:不可更新,因为修改会影响多个基表更新正常。
实验五 视图的使用
实验五视图的使用
实验目的:掌握视图的使用
实验步骤:
1、启动SQL Server的企业管理器
2、在企业管理器中找到Pubs数据库,找到Pubs下的“视图”;
3、鼠标右键点击“视图”,选择“新建视图”,进入视图设计页面;
4、在出现的窗口中表authors、表titleauthor和titles,选择下列字段
au_id, au_lname, au_fname,phone, address, city, state, au_ord, royaltyper, type, price, royalty,ytd_sales, notes, pubdate;
5、点击查询分析器工具栏中的“”图标,得出下图结果,查看数据的结果;
6、保存上述视图,命名为V_AU_TILS_TIL,关闭视图设计窗口,在企业管理器中按打开表的方
式打开视图V_AU_TILS_TIL,查看结果,与上图比较;
7、在查询分析器中检索V_AU_TILS_TIL视图中state列等于“CA”的所有记录,按price降序
排序;
8、数据库Pubs中有两个表(employee和jobs),请写出使用SQL语句实现如表三结构的视图,
并按“fname”字段升序排列,要求只显示两个表中“job_id”字段相同的记录。
表一:employee
表二:jobs
表三。
实验5数据库的索引和视图
韶关学院
学生实验报告册
实验课程名称:数据库技术与应用
实验项目名称:数据库的索引和视图
实验类型(打√):(基础☑
设计
院系:教育学院专业班级:11教育技术学姓名:学号:
指导老师:林育曼
韶关学院教务处编制
一、实验预习报告内容
二、实验原始(数据)记录实验时间:2013年11月5日(星期二第五六节)
三、实验报告内容
6.使用企业管理器的“向导”工具对grade表创建一个聚集索引和唯一索引。
根据实验指导老师要求另附相同规格的纸张并粘贴在相应的“实验报告册”中。
2、实验报告册属教学运行材料,院系(中心)应按有关规定归档保管。
实验五SQL的视图
删除视图会影响依赖于该视图的 存储过程、触发器等对象的执行
删除视图会影响依赖于该视图的 用户权限和角色成员资格
删除视图的注意事项
确认视图名称和来源:在删除视图 之前,需要确认要删除的视图的名 称和来源,以避免误删。
备份数据:在删除视图之前,建议 先备份相关的数据,以防止数据丢 失。
添加标题
添加标题
添加标题
添加标题
检查视图是否被引用:如果视图被其 他对象引用,如存储过程、触发器等, 则无法直接删除。需要先移除引用, 再删除视图。
权限检查:只有具有相应权限的用 户才能删除视图。在删除视图之前, 需要确保用户具有足够的权限。
感谢您的耐心观看
汇报人:XX
删除视图的限制条件
不能删除其他视图或存储过程所依赖的视图。 不能删除正在被其他用户或进程使用的视图。 不能删除包含有复杂查询或存储过程的视图。 删除视图之前需要先删除或修改依赖于该视图的触发器、存储过程等对象。
删除视图的影响范围
删除视图不会影响数据库中的数 据
删除视图不会影响其他视图的定 义
更新视图的删除和修改操作
删除操作:使用 DELETE语句删除视 图中的数据,类似 于删除表中的数据
修改操作:使用 UPDATE语句修改视 图中的数据,类似 于修改表中的数据
注意事项:更新视 图时需要注意视图 的定义和来源表的 数据是否允许更新
更新视图与源表的关 系:更新视图时,如 果视图与源表存在关 联,需要谨慎处理, 避免数据不一致
更新视图的插入操作
插入操作:向视图中插入数据 语法格式:INSERT INTO 视图名 (列1, 列2, ...) VALUES (值1, 值2, ...); 注意事项:插入的数据必须符合视图的定义和约束条件 示例:INSERT INTO view_name (column1, column2) VALUES ('value1', 'value2');
实验5 视图 实验报告模板
(数据库原理与应用)实验报告实验名称视图的应用实验地点60#504实验时间1.实验目的:掌握视图的知识,体会视图与基本表的区别。
2.实验内容:按教材P176实验5的要求。
3.实验要求:按教材P176实验5的要求。
4.实验准备:认真阅读实验要求,分析各种情况作出具体分析明确要求,复习实验二、三,了解各表之间关系设计记录时要符合实际情况,注意实验二各种约束5.实验过程(含代码、实验过程、遇到的问题和解决方法等):1、建立视图单表、投影、建立视图前后对比单表、选择、建立视图前后对比单表、投影和选择、建立视图前后对比多表、连接、建立视图前后对比多表、嵌套、建立视图前后对比含虚字段的视图2、设计一些查询一般:连接:嵌套:3、1.投影:投影操作中:插入、更新、删除都正常2.选择:宁十一宁十一宁十一宁十一宁十一宁十一选择操作中:插入、更新、删除都正常投影和选择:投影和选择操作中:更新、删除可正常执行插入操作时,插入的数据没有进入视图中,而是仅仅进入视图对应的表中Select*from投影和选择/表名,可知连接:连接操作中:更新可正常执行,而使用插入、删除操作时,出现提示:不可更新,因为修改会影响多个基表嵌套:嵌套操作中:插入的数据仅仅进入视图对应的表中,没有在视图中体现;更新、删除可正常操作虚字段:虚字段操作中:插入仅仅进入表中,不进入视图中;删除时显示:不可更新,因为修改会影响多个基表更新正常6.实验总结:在SQL中,视图是基于SQL语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。
视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
我们可以向视图添加SQL函数、WHERE以及JOIN语句,我们也可以提交数据,就像这些来自于某个单一的表。
视图可以快速访问两表或多表连接所组成的数据。
有时要访问表间连接所组成的数据集,可以把查询出来的数据集定义成视图,可以帮助快速访问所需的数据。
但是当用户试图修改视图的某些行时,SQL Server必须把它转化为对基本表的某些行的修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5 索引和视图1.实验目的(1)掌握使用SQL Server管理平台和Transact-SQL语句CREA TE INDEX创建索引的方法。
(2)掌握使用SQL Server管理平台查看索引的方法。
(3)掌握使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引的方法。
(4)掌握使用SQL Server管理平台和Transact-SQL语句CREA TE VIEW创建视图的用法。
(5)了解索引和视图更名的系统存储过程sp_rename的用法。
(6)掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。
(7)了解删除视图的Transact-SQL语句DROP VIEW的用法。
2.实验内容及步骤说明:在SQL Server2005中,有三种视图:标准视图、索引视图和分区视图。
标准视图:组合了一个或多个表中的数据,用户可以获得使用视图的大多数好处。
包括将重点放在特定数据上以简化数据操作。
索引视图:适合聚合多行的查询,不太适合经常更新的基本数据集。
分区视图:支持大型多层网站的处理需要。
SQL Server2005提供了两种创建视图的方法。
SSMS和T-SQL语句。
create view语法形式:create view 【数据库名.】【拥有者.】视图名【(列名1,列名2【…..n】)】AS<select 语句>【with check option】其中,各参数说明如下:数据库名:当前数据库名称拥有者:当前数据库的拥有者,在绑定架构时不可缺。
视图名:用于指定包含的列名,符合标识符的命名规则。
列名:视图中包含的列名。
若使用与源表或视图中相同的列名时,则不必给出列名,如果是计算得到的值则必须指定列名。
select语句:定义视图的select语句。
在视图中可以使用的select语句有一些限制。
with check option:强制针对视图执行的所有数据修改语句都必须符合在select语句中设置的条件。
示例1:创建女生的视图(girl_view),包括学号、姓名、性别、出生日期、选修的课程名称、分数等信息。
代码如下:create view girl_viewasselect s.学号,姓名,性别,出生日期,课程名称,g.分数from student_info as s inner join grade as gon s.学号=g.学号inner join curriculum as con g.课程编号=c.课程编号where性别='女'示例2:(1)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。
(2)使用SQL Server管理平台按curriculum表的课程编号列创建唯一性索引。
(3)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的grade 表的“分数”字段创建一个非聚集索引,命名为grade_index。
CREATE INDEX grade_index ON grade(分数)(4)为studentsdb数据库的grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_id_c_ind。
CREATE UNIQUE INDEX grade_id_c_ind ON grade(学号,课程编号)(5)分别使用SQL Server管理平台和系统存储过程sp_helpindex查看grade表和student_info表上的索引信息。
sp_helpindex grade(6)使用SQL Server管理平台对grade表创建一个聚集索引和唯一索引。
(7)使用系统存储过程sp_rename将索引grade_index更名为grade_ind。
sp_rename 'grade.grade_index','grade_ind','INDEX'(8)分别使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引grade_ind。
再次使用系统存储过程sp_helpindex查看grade表上的索引信息。
DROP INDEX grade.grade_ind(9)在studentsdb数据库中,以student_info表为基础,使用SQL Server管理平台建立名为v_stu_i的视图,使视图显示学生姓名、性别、家庭住址。
(10)在studentsdb数据库中,使用Transact-SQL语句CREA TE VIEW建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用视图查询学号为0003的学生情况。
(11)基于student_info表、curriculum表和grade表,建立一个名为v_stu_g的视图,视图中具有所有学生的学号、姓名、课程名称、分数。
使用视图v_stu_g查询学号为0001的学生的所有课程与成绩,如图1-9所示。
图1-9 学号为0001的学生的视图信息(12)分别使用SQL Server管理平台和Transact-SQL语句修改视图v_stu_c,使之显示学号、姓名、每个学生所学课程数目。
(13)使用Transact-SQL语句ALTER VIEW修改视图v_stu_i,使其具有列名学号、姓名、性别。
ALTER VIEW v_stu_i(学号,姓名,性别)AS SELECT 学号,姓名,性别 FROM student_info(14)使用系统存储过程sp_rename将视图v_stu_i更名为v_stu_info。
sp_rename v_stu_i,v_stu_info(15)利用视图v_stu_i为student_info表添加一行数据:学号为0015、姓名为陈婷、性别为女。
(16)利用视图v_stu_i删除学号为0015的学生记录。
(17)利用视图v_stu_g修改姓名为刘卫平的学生的高等数学的分数为84。
(18)使用Transact-SQL语句DROP VIEW删除视图v_stu_c和v_stu_g。
3.实验思考(1)是否可以通过视图v_stu_g修改grade表中学号列数据?(2)比较视图和基表操作表中数据的异同。
(3)可更新视图必须满足哪些条件?(4)什么是索引?SQL Server 2005中有两种形式的索引:聚集索引和非聚集索引,简单叙述它们的区别?(5)能否在视图上创建索引参考1.分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。
CREA TE UNIQUE CLUSTEREDINDEX [PK_curriculum] ON [curriculum] ([课程编号])ON [PRIMARY]9.在studentsdb数据库中,以student_info表为基础,使用SQL Server管理平台建立名为v_stu_i的视图,使视图显示学生姓名、性别、家庭住址。
10.在studentsdb数据库中,使用Transact-SQL语句CREA TE VIEW建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用视图查询学号为0003的学生情况。
1.create view v_stc_ccasselect grade.学号,姓名,课程编号from student_info,gradewhere grade.学号=student_info.学号AND grade.学号='0003';2.CREA TE VIEW v_stu_cASSELECT a.学号, a.姓名, b.课程编号FROM student_info a INNER JOINgrade b ON a.学号= b.学号SELECT * FROM v_stu_c WHERE (学号= '0003')11.基于student_info表、curriculum表和grade表,建立一个名为v_stu_g的视图,视图中具有所有学生的学号、姓名、课程名称、分数。
使用视图v_stu_g查询学号为0001的学生的所有课程与成绩,如图1-9所示。
图1-9 学号为0001的学生的视图信息CREA TE VIEW v_stu_gASSELECT a.学号, a.姓名, c.课程名称, b.分数FROM student_info a INNER JOINgrade b ON a.学号= b.学号INNER JOINcurriculum c ON b.课程编号= c.课程编号SELECT * FROM v_stu_g WHERE 学号=’0001’12.分别使用SQL Server管理平台和Transact-SQL语句修改视图v_stu_c,使之显示学号、姓名、每个学生所学课程数目。
ALTER VIEW v_stu_cASSELECT a.学号, a.姓名, COUNT(*) AS 课程数目FROM student_info a INNER JOINgrade b ON a.学号= b.学号GROUP BY a.学号, a.姓名13.使用Transact-SQL语句ALTER VIEW修改视图v_stu_i,使其具有列名学号、姓名、性别。
ALTER VIEW v_stu_i(学号,姓名,性别)AS SELECT 学号,姓名,性别FROM student_info14.使用系统存储过程sp_rename将视图v_stu_i更名为v_stu_info。
sp_rename v_stu_i,v_stu_info21.利用视图v_stu_i为student_info表添加一行数据:学号为0015、姓名为陈婷、性别为女。
INSERT INTO v_stu_i V ALUES(‘0015’,’陈婷’,’女’)22.利用视图v_stu_i删除学号为0015的学生记录。
DELETE FROM v_stu_i WHERE (学号= '0015')23.利用视图v_stu_g修改姓名为刘卫平的学生的高等数学的分数为84。
UPDA TE v_stu_g SET 分数=84 WHERE 姓名='刘卫平' AND 课程名称='高等数学'24.使用Transact-SQL语句DROP VIEW删除视图v_stu_c和v_stu_g。
DROP VIEW v_stu_cDROP VIEW v_stu_g。