实验五 SQL的视图
数据库实验4 SQL的视图、数据控制

实验四SQL的视图、数据控制[实验目的]1.理解SQL的视图以及与基本表的区别;2.掌握SQL视图的定义、查询、更新。
3.掌握SQL Server中有关用户、权限的管理方法。
4.掌握SQL语言的控制功能5.加深对数据库安全性的理解[实验时数] 2 学时[实验内容]1.创建、查看、修改和删除视图。
2.创建、编辑和删除数据库图表。
[实验方法]1. 创建视图假设在图书—读者数据库已经建立了图书、读者和借阅3个表,它们的结构为:图书(书号,类别,出版社,作者,书名,定价);借阅(书号,读者书证号,借阅日期);读者(书证号,姓名,单位,性别,电话)。
如果要在上述3个表的基础上建立一个视图,取名为: 读者_VIEW。
其操作用SQL语句表示为:CREATE VIEW 读者_VIEWAS SELECT图书.*,借阅.*FROM 图书,借阅,读者WHERE 图书.书号=借阅.书号AND 借阅.读者书证号=读者.书证号;下面利用SQL Server 2000中提供的视图创建向导,来创建读者_VIEW视图。
1)打开企业管理器窗口,确认服务器,打开数据库文件夹,选中新视图所在的数据库。
2)选择菜单:工具 向导,如图5- 错误!未定义书签。
所示。
3)在如图5-18所示的向导选择对话框中,单击数据库左边的“+”号,使之展开。
选择“创建视图向导”选项,单击[确定]按钮。
4)进入创建视图向导后,首先出现的是欢迎进入创建视图向导对话框,其中简单介绍了该向导的功能,如图5- 错误!未定义书签。
所示。
单击[下一步]按钮后,就会出现如图5-20所示的“选择数据库名称”对话框。
5)在“选择数据库名称”对话框中,选择视图所属的数据库。
本例的数据库为“图书_读者”。
单击[下一步]按钮,则进入如图5- 错误!未定义书签。
所示的选择表对话框。
签。
在向导对话框中选择视图向导图5- 错误!未定义书签。
欢迎进入创建视图向导对话框图5- 错误!未定义书签。
实验五 视图的创建和使用

实验五视图的创建和使用5.1概述5.1.1任务一理解视图的概念视图是一个虚拟表,其内容由查询定义。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据集合形式存在。
行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基表来说,视图的作用类似于筛选。
定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。
视图被定义后便存放在数据库中,对视图中的数据的操作与对表的操作一样,可以对其进行查询、修改和删除,但对数据的操作要满足一定的条件。
当对视图所看到的数据进行修改时,相应的基表的数据也会发生变化,同时,若基表的数据发生变化,这种变化也会自动地反映到视图中。
5.1.2任务二理解视图的优点用户可以根据自己的实际需要创建视图,使用视图有很多优点,主要有以下几点:1、简单性视图可以屏蔽数据的复杂性,简化用户对数据库的操作。
使用视图,用户可以不必了解数据库的结构,就可以方便地使用和管理数据。
那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
2、逻辑数据独立性视图可以使应用程序和数据库表在一定程度上独立。
如果没有视图,应用一定是建立在表上的。
有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。
3、安全性通过视图用户只能查询和修改他们所能见到的数据。
数据库中的其他数据则既看不见也取不到。
5.2创建视图创建视图的方法有三种:在创建视图前请考虑如下原则:只能在当前数据库中创建视图.视图名称必须遵循标识符的规则,且对每个用户必须为唯一.此外,该名称不得与该用户拥有的任何表的名称相同.可在其他视图和引用视图的过程之上建立视图.SQLServer 2000允许嵌套多达32级视图若要创建视图,数据库所有者必须授予用户创建视图的权限,并且用户对视图定义中所引用的表或视图要有适当的权限5.2.1任务一使用企业管理器创建视图使用企业管理器创建视图的具体操作步骤如下:1、打开企业管理器窗口,打开“新建视图”对话框。
sql视图实例

sql视图实例⼀个视图是⼀个或⼀组语句,存储在数据库中相关的名称。
⼀个视图实际上是⼀个预定义的SQL查询中的表的形式组成。
⼀个视图可以包含⼀个表的所有⾏,或选择表中的⾏。
从⼀个或多个表上写SQL查询创建⼀个视图,视图可以被创建。
这是⼀种虚拟表的视图,允许⽤户执⾏以下操作:发现⾃然或直观的⽤户或⽤户类的结构数据的⽅式。
限制访问的数据,例如,⽤户可以看到和(有时)修改正是他们所需要的并没有更多。
总结从可以⽤于⽣成报告的各种表的数据。
创建视图:使⽤CREATE VIEW语句创建数据库视图。
从⼀个单⼀的表,多个表,或另⼀个视图也可以再创建视图。
要创建⼀个视图,⽤户根据具体的实施必须有相应的系统权限。
基本的CREATE VIEW语法如下:CREATE VIEW view_name ASSELECT column1, column2.....FROM table_nameWHERE[condition];在使⽤过程中正常的SQL SELECT查询,可以包含多个表的SELECT语句中的⽅式⾮常相似。
实例:考虑CUSTOMERS表中有以下记录:+----+----------+-----+-----------+----------+| ID | NAME | AGE | ADDRESS | SALARY |+----+----------+-----+-----------+----------+|1| Ramesh |32| Ahmedabad |2000.00||2| Khilan |25| Delhi |1500.00||3| kaushik |23| Kota |2000.00||4| Chaitali |25| Mumbai |6500.00||5| Hardik |27| Bhopal |8500.00||6| Komal |22| MP |4500.00||7| Muffy |24| Indore |10000.00|+----+----------+-----+-----------+----------+现在,以下是从CUSTOMERS表中创建⼀个视图的例⼦。
数据库实验五六1

实验五视图、索引及数据更新一、实验目的:熟练掌握索引的建立与删除的方法,熟练掌握SQL的应用,熟练掌握数据插入、修改和删除的使用,为后继学习作准备。
二、实验属性(验证性)1.了解并掌握SQL查询分析器及企业管理器的使用;2.掌握基本表的定义、删除与修改。
三、实验原理SQL语言应用。
四、实验步骤:(1) 启动Oracle的SQL Developer或者SQL Plus,或者SQL Server 查询分析器;(2) 对于Oracle11g的SQL Plus需要进行登录,对于Oracle11g的SQL Developer需要进行建立连接。
1 建立索引建立唯一索引:例3.1 为学生选课数据库中的Students,Courses,SC三个表建立索引。
其中Students表按Sname升序建唯一索引,Courses表按Cname升序建唯一索引,SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。
查看自己建立的索引:2 删除索引例3.2 删除基本表SC上的Rep_SCno索引。
然后查询看索引是否还存在。
理解索引的意义。
例3.3 删除基本表student上的Rep_Sno索引。
3 建立视图例3.4 建立数学系学生的视图C_Student,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。
例3.5 建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图Student_CR。
例 3.6定义一个反映学生出生年份的视图student_birth(sno,sname,s_birth,ssex,sdept)。
视图建立后,使用命令查询自己创建的视图:4 查询视图例3.7 在数学系的学生视图C_Student中找出年龄(Sage)小于20岁的学生姓名(Sname)和年龄(Sage)。
例3.8 在Student_CR视图中查询成绩在85分以上的学生学号(Sno)、姓名(Sname)和课程名称(Cname)。
实验报告五 视图与索引

实验五视图与索引一.实验目的1.学会使用企业管理器建立视图与索引2.掌握使用SQL语句建立视图与索引二.实验内容1.使用企业管理器建立视图索引2.使用SQL语句建立视图索引三.实验准备1.复习与本次实验内容相关知识2.对本次实验中要求自己完成的部分做好准备四.实验步骤1.用企业管理器建立一个基于学生表、课程表、成绩表的视图,要求该视图显示学号、姓名、课程、成绩o启动企业管理器、注册、连接o"新建视如下图所示o在新视图窗口内的关系图窗格内右击鼠标,弹出的菜单即为视图设计菜单,执行"添加表(B)...",如下图所示再在添加表对话框中选择SCORES表,再单击添加按钮。
依此操作,分别添加STUDENT、COURSES表,单击关闭按钮。
再在关系窗格内,拖动STUDENT表的"SID"至SCORES的STUDENT_ID,拖动COURSES表的"CNO"至SCORES的COURSE_ID,再分别选中STUDENT表的"SID","NAME"列(列前的复选框),COURSES表的"COURSE"列以及SCORES表的"SCORE"列,然后单击"!"按钮,显示视图结果,如下图所示:单击保存按钮,将视图保存为V_SCORES,单击确定.2.用查询分析器建立一个基于学生表、班级表的学生视图(V_STUDENTS),包括学号、姓名、班级、系,SQL语句如下:CREATE VIEW dbo.V_STUDENTSASSELECT dbo.U_STUDENTS.ID, dbo.U_,dbo.U_CLASSES.CLASS,dbo.U_CLASSES.DEPARTMENTFROM dbo.U_STUDENTS INNER JOINdbo.U_CLASSES ON dbo.U_STUDENTS.CLASS_ID = dbo.U_CLASSES.ID3.自己写一个SQL语句建立一个基于课程表的视图(V_COURSES),要求显示课程编号.课程名、学分。
实验五SQL的视图

实验五 SQL的视图1、实验目的熟悉SQL支持的有关视图的操作,能够熟练使用SQL语句来创建需要的视图,对视图进行查询和取消视图。
2、实验内容(1)定义常见的视图形式,包括:●行列子集视图●WITH CHECK OPTION的视图●基于多个基表的视图●基于视图的视图●带表达式的视图●分组视图(2)通过实验考察WITH CHECK OPTION这一语句在视图定义后产生的影响,包括对修改操作、删除操作、插入操作的影响。
(3)讨论视图的数据更新情况,对子行列视图进行数据更新。
(4)使用DROP语句删除一个视图,由该视图导出的其他视图定义仍在数据字典中,但已不能使用,必须显式删除。
同样的原因,删除基表时,由该基表导出的所有视图定义都必须显式删除。
3、实验步骤(1)创建一个行列子集视图CS_View,给出选课成绩合格的学生的编号、教师编号、所选课程号和该课程成绩。
create view CS_Viewasselect wjy_Sno,wjy_Tno,wjy_Cno,wjy_Scorefrom Wangjy_Reportswhere wjy_Score>=60with check option(2)创建基于多个基本表的视图SCT_View,这个视图由学生姓名和他所选修的课程名及讲授该课程的教师姓名构成。
(3)创建带表达式的视图EXP_View,由学生姓名及所选课程名和所有课程成绩都比原来多5分这几个属性组成。
(4)创建分组视图Group_View,将学生的学号及他的平均成绩定义为一个视图。
(5)创建一个基于视图的视图,基于(1)中建立的视图,定义一个包括学生编号、学生所选课程数目和平均成绩的视图VV_View。
create view VV_Viewselect wjy_Sno,wjy_Cno,AVG(wjy_Score)AVG_Scorefrom CS_Viewgroup by wjy_Sno,wjy_Cnohaving AVG(wjy_Score)>= 60(6)查询所有选修课程“数据库原理及其应用”的学生姓名。
实验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)创建一个不可能更新的视图,并利用更新语句验证该视图不可更新。
SQL中的视图

SQL中的视图概述1、视图(view)在数据库管理系统中也是⼀个对象,也是以⽂件形式存在的。
2、视图也对应了⼀个查询结果,只是从不同的⾓度查看数据。
创建、删除、修改视图创建视图语法结构:create view 视图名称 as 查询语句;例⼦:从emp表查询empno、ename、sal,结果当作视图展⽰。
CREATE VIEW `myview` AS SELECTEMPNO,ENAME,SALFROMemp;通过视图对象查看数据:SELECT*FROM`myview`;修改视图语法结构:alter view 视图名称 as 查询语句;⽰例:将myview视图修改为deptno、ename、job、salALTER VIEW `myview` AS SELECTEMPNO,ENAME,JOB,SALFROMemp;查看视图:SELECT*FROM`myview`;删除视图语法结构:drop view if exists 视图名称;⽰例:删除myview视图drop view if exists `myview`;作⽤⾯向视图查询,可以提⾼查询效率;也可以通过视图操作原表数据。
例⼦1、单独执⾏:select e.ename,d.dname from emp e join dept d on e.deptno = d.deptno;2、将上⾯执⾏结果当作视图对象创建create view myview as select e.ename,d.dname from emp e join dept d on e.deptno = d.deptno;3、⾯向视图查询:没有进⾏表连接,提⾼检索效率。
select * from myview;隐藏表的实现细节1、CREATE VIEW `myview` AS SELECTEMPNO a,ENAME b,SAL cFROMemp;SELECT * FROM myview;2、⾯向视图查询,只知道myview视图中有a、b、c三个字段,不知道该视图背后真实表的结构是什么。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五 SQL的视图
1、实验目的
熟悉SQL支持的有关视图的操作,能够熟练使用SQL语句来创建需要的视图,对视图进行查询和取消视图。
2、实验内容
(1)定义常见的视图形式,包括:
●行列子集视图
●WITH CHECK OPTION的视图
●基于多个基表的视图
●基于视图的视图
●带表达式的视图
●分组视图
(2)通过实验考察WITH CHECK OPTION这一语句在视图定义后产生的影响,包括对修改操作、删除操作、插入操作的影响。
(3)讨论视图的数据更新情况,对子行列视图进行数据更新。
(4)使用DROP语句删除一个视图,由该视图导出的其他视图定义仍在数据字典中,但已不能使用,必须显式删除。
同样的原因,删除基表时,
由该基表导出的所有视图定义都必须显式删除。
3、实验步骤
(1)创建一个行列子集视图CS_View,给出选课成绩合格的学生的编号、教师编号、所选课程号和该课程成绩。
create view CS_View
as
select wjy_Sno,wjy_Tno,wjy_Cno,wjy_Score
from Wangjy_Reports
where wjy_Score>=60
with check option
(2)创建基于多个基本表的视图SCT_View,这个视图由学生姓名和他所选修的课程名及讲授该课程的教师姓名构成。
程成绩都比原来多5分这几个属性组成。
个视图。
(5)创建一个基于视图的视图,基于(1)中建立的视图,定义一个包括学生编号、学生所选课程数目和平均成绩的视图VV_View。
create view VV_View
select wjy_Sno,wjy_Cno,AVG(wjy_Score)AVG_Score
from CS_View
group by wjy_Sno,wjy_Cno
having AVG(wjy_Score)>= 60
(6)查询所有选修课程“数据库原理及其应用”的学生姓名。
select wjy_Sname
from Wangjy_Students
where wjy_Sno in
(select wjy_Sno
from Wangjy_Reports
where wjy_Cno in
(select wjy_Cno
from Wangjy_Courses
where wjy_Cname='数据库原理及其应用'))
(7)插入元组(S52,T02,C02,59)到视图CS_View中。
若是在视图的定义中存在WITH CHECK OPTION字句对插入操作由什么影响。
不用WITH CHECK OPTION能完成插入,但是用select* from CS_View命令则看不到刚插入的元祖。
(8)将视图CS_View(包括定义WITH CHECK OPTION)中,所有课程编号为C01的课程的成绩都减去5分。
这个操作数据库是否会正确执行,为什么?如果加上5分(原来95分以上的不变)呢?
学生的记录,会产生什么结果?
drop view SCT_View,CS_View。