实验五 SQL的视图

合集下载

数据库实验4 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查询中的表的形式组成。

⼀个视图可以包含⼀个表的所有⾏,或选择表中的⾏。

从⼀个或多个表上写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

数据库实验五六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的视图

实验五 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-视图

实验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中的视图

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.实验目的(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)基于多个表根据连接操作定义视图。

sql视图实验报告

sql视图实验报告

sql视图实验报告SQL视图实验报告引言:在数据库管理系统中,SQL视图是一种虚拟表,它是由一个或多个基本表的行和列组成的。

视图是基于查询的结果集,可以被视为一个表,但实际上并不存储数据。

本实验旨在探索SQL视图的概念、创建和使用方法,并通过实际案例来展示其在数据库管理中的应用。

一、SQL视图的概念SQL视图是一种虚拟表,它是由一个或多个基本表的行和列组成的。

视图是基于查询的结果集,可以被视为一个表,但实际上并不存储数据。

视图可以隐藏基本表的复杂性,简化用户的查询操作,并提供数据安全性和数据独立性。

二、创建SQL视图在SQL中,我们可以使用CREATE VIEW语句来创建视图。

CREATE VIEW语句的基本语法如下:CREATE VIEW view_name ASSELECT column1, column2, ...FROM table_nameWHERE condition;三、使用SQL视图1. 查询视图:通过SELECT语句可以查询视图,就像查询普通表一样。

例如,我们可以使用SELECT * FROM view_name来查询视图的所有数据。

2. 更新视图:视图也可以通过UPDATE、INSERT和DELETE语句进行数据的更新操作。

但需要注意的是,视图的更新操作可能会影响到基本表的数据,因此在进行更新操作时需要谨慎。

四、SQL视图的应用案例下面以一个学生信息管理系统为例,来展示SQL视图的应用。

假设我们有两个基本表:学生表(student)和课程表(course)。

学生表包含学生的学号、姓名和年龄等信息;课程表包含课程的编号、名称和学分等信息。

现在我们需要查询每个学生所选课程的信息,并计算每个学生的总学分。

首先,我们可以创建一个视图来查询学生选课的信息:CREATE VIEW student_course ASSELECT student.student_id, student.student_name, course.course_name, course.creditFROM studentJOIN course ON student.student_id = course.student_id;然后,我们可以使用SELECT语句查询视图的数据:SELECT * FROM student_course;接下来,我们可以通过对视图进行分组和聚合操作,计算每个学生的总学分:SELECT student_id, student_name, SUM(credit) AS total_creditFROM student_courseGROUP BY student_id, student_name;通过以上操作,我们可以方便地查询每个学生所选课程的信息,并计算每个学生的总学分。

sql——视图

sql——视图

3.6 视图视图的特点⏹虚表,是从一个或几个基本表(或视图)导出的表⏹只存放视图的定义,不存放视图对应的数据⏹基表中的数据发生变化,从视图中查询出的数据也随之改变基于视图的操作⏹查询⏹删除⏹受限更新⏹定义基于该视图的新视图3.6.1 定义视图⏹建立视图⏹删除视图一、建立视图⏹语句格式CREATE VIEW<视图名> [(<列名> [,<列名>]…)]AS <子查询>[WITH CHECK OPTION];⏹组成视图的属性列名:全部省略或全部指定⏹子查询不允许含有ORDER BY子句和DISTINCT短语⏹RDBMS执行CREATE VIEW语句时只是把视图定义存入数据字典,并不执行其中的SELECT语句。

⏹在对视图查询时,按视图的定义从基本表中将数据查出。

[例1] 建立信息系学生的视图。

CREATE VIEW IS_StudentASSELECT Sno,Sname,SageFROM StudentWHERE Sdept= 'IS';[例2]建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。

CREATE VIEW IS_StudentASSELECT Sno,Sname,SageFROM StudentWHERE Sdept= 'IS'WITH CHECK OPTION;对IS_Student视图的更新操作:⏹修改操作:自动加上Sdept= 'IS'的条件⏹删除操作:自动加上Sdept= 'IS'的条件⏹插入操作:自动检查Sdept属性值是否为'IS'•如果不是,则拒绝该插入操作•如果没有提供Sdept属性值,则自动定义Sdept为'IS'⏹基于多个基表的视图[例3] 建立信息系选修了1号课程的学生视图。

CREATE VIEW IS_S1(Sno,Sname,Grade)ASSELECT Student.Sno,Sname,GradeFROM Student,SCWHERE Sdept= 'IS' ANDStudent.Sno=SC.Sno ANDo= '1';⏹基于视图的视图[例4] 建立信息系选修了1号课程且成绩在90分以上的学生的视图。

SQL视图详解

SQL视图详解

视图详解1.视图的概述视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。

视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。

视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束,并同样会触发定义在基表上的触发器。

(Oracle支持在视图上显式的定义触发器和定义一些逻辑约束)2.视图的存储与表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。

视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。

由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间。

3.视图的作用用户可以通过视图以不同形式来显示基表中的数据,视图的强大之处在于它能够根据不同用户的需要来对基表中的数据进行整理。

视图常见的用途如下:∙通过视图可以设定允许用户访问的列和数据行,从而为表提供了额外的安全控制∙隐藏数据复杂性∙视图中可以使用连接(join),用多个表中相关的列构成一个新的数据集。

此视图就对用户隐藏了数据来源于多个表的事实。

简化用户的SQL 语句∙用户使用视图就可从多个表中查询信息,而无需了解这些表是如何连接的。

∙以不同的角度来显示基表中的数据∙视图的列名可以被任意改变,而不会影响此视图的基表∙使应用程序不会受基表定义改变的影响∙在一个视图的定义中查询了一个包含4 个数据列的基表中的3 列。

当基表中添加了新的列后,由于视图的定义并没有被影响,因此使用此视图的应用程序也不会被影响。

保存复杂查询一个查询可能会对表数据进行复杂的计算。

用户将这个查询保存为视图之后,每次进行类似计算只需查询此视图即可。

逻辑数据独立性视图可以使应用程序和数据库表在一定程度上独立。

如果没有视图,应用一定是建立在表上的。

有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。

SQL视图简介

SQL视图简介

SQL视图简介⽬录学习重点从 SQL 的⾓度来看,视图和表是相同的,两者的区别在于表中保存的是实际的数据,⽽视图中保存的是SELECT语句(视图本⾝并不存储数据)。

使⽤视图,可以轻松完成跨多表查询数据等复杂操作。

可以将常⽤的SELECT语句做成视图来使⽤。

创建视图需要使⽤CREATE VIEW语句。

视图包含“不能使⽤ORDER BY ”和“可对其进⾏有限制的更新”两项限制。

删除视图需要使⽤DROP VIEW语句。

⼀、视图和表我们⾸先要学习的是⼀个新的⼯具——视图。

KEYWORD视图视图究竟是什么呢?如果⽤⼀句话概述的话,就是“从 SQL 的⾓度来看视图就是⼀张表”。

实际上,在 SQL 语句中并不需要区分哪些是表,哪些是视图,只需要知道在更新时它们之间存在⼀些不同就可以了,这⼀点之后会为⼤家进⾏介绍。

⾄少在编写SELECT语句时并不需要特别在意表和视图有什么不同。

那么视图和表到底有什么不同呢?区别只有⼀个,那就是“是否保存了实际的数据”。

通常,我们在创建表时,会通过INSERT语句将数据保存到数据库之中,⽽数据库中的数据实际上会被保存到计算机的存储设备(通常是硬盘)中。

因此,我们通过SELECT语句查询数据时,实际上就是从存储设备(硬盘)中读取数据,进⾏各种计算之后,再将结果返回给⽤户这样⼀个过程。

但是使⽤视图时并不会将数据保存到存储设备之中,⽽且也不会将数据保存到其他任何地⽅。

实际上视图保存的是SELECT语句(图 1)。

我们从视图中读取数据时,视图会在内部执⾏该SELECT语句并创建出⼀张临时表。

图 1 视图和表视图的优点视图的优点⼤体有两点。

第⼀点是由于视图⽆需保存数据,因此可以节省存储设备的容量。

例如,我们在中创建了⽤来汇总商品种类(product_type)的表。

由于该表中的数据最终都会保存到存储设备之中,因此会占⽤存储设备的数据空间。

但是,如果把同样的数据作为视图保存起来的话,就只需要代码清单 1 那样的SELECT语句就可以了,这样就节省了存储设备的数据空间。

SQL实验五 创建与管理数据库

SQL实验五 创建与管理数据库

实验五创建与管理数据库一、实验内容1.创建名为Sale的销售数据库。

该数据库有一一个名为Sale mdf的主数据文件和名为Sale_ log.ldf的事务日志文件。

主数据文件容量为4MB,事务日志文件容量为10MB,数据文件和事务日志文件的最大容量为20MB,文件增长量为1MB。

USEmasterGOCREATEDATABASE SaleONPRIMARY(NAME = Sale,FILENAME='E:\Sale.mdf',SIZE = 5MB,MAXSIZE = 20MB,FILEGROWTH = 1MB)LOG ON(NAME =Sale_log,FILENAME='E:\Sale_log.ldf',SIZE = 10MB,MAXSIZE = 20MB,FILEGROWTH = 1MB)GO2.在Sale数据库下新增名字为UserGroup的文件组。

USE SaleGOalterdatabase Saleaddfilegroup UserGroupgo查看Sale数据库中的文件USE SaleGOSP_helpfilegroupgo3.以增加次数据文件的方式扩充Sale数据库的容量。

次数据文件容量为5MB,最大容量为10MB,文件增量为1MB。

要求将次数据文件保存在与事务日志文件不同的存储设备_上,次数据文件作为UserGroup文件组的成员。

usemastergoalterdatabase Saleaddfile(name=sale2,filename='D:\sale2.ndf',size=5MB,maxsize=10MB,filegrowth=1MB)tofilegroup UserGroupgo查看Sale数据库中的文件USE SaleGOSP_helpfilegroupgo。

sql实验5 视图

sql实验5 视图
3. 学习灵活熟练的进行视图的操作,认识视图的作用
二.实验内容
一.定义视图
在EDUC数据库中,已StudentCourse 和Student_course表为基础完成一下视图定义
1. 定义计算机系学生基本情况视图V_Computer;
2.将Student Course 和Student_course表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G
insertintoV_IS
values ('S12','YAN XI',19,'IS')
go
3.通过视图V_IS,新增加一个学生记录 ('S13','YAN XI',19,'MA'),并查询结果
insert into V_IS
values(‘S13’,’YAN XI’,19,’MA’)
go
4.通过视图V_IS,删除学号为“S12”和“S3”的学生信息,并查询结果
3. 通过视图V_IS,新增加一个学生记录 ('S13','YAN XI',19,'MA'),并查询结果
4. 通过视图V_IS,删除学号为“S12”和“S3”的学生信息,并查询结果
5. 要通过视图V_S_C_G,将学号为“S12”的姓名改为“S12_MMM”,是否可以实现?并说明原因
6. 要通过视图V_AVG_S_G,将学号为“S1”的平均成绩改为90分,是否可以实现?并说明原因
在企业管理器中将视图 COMPUTE_AVG_GRADE中改成建立在数学系的学生学号、选修课程号以及平均成绩的视图。
(2) 使用SQL语句修改视图
①在查询分析器中使用更改视图的命令将上面建立的视图“V_计算机系学生”更名为“V_计算机系男生”。

实验五SQL的视图

实验五SQL的视图

删除视图会影响依赖于该视图的 存储过程、触发器等对象的执行
删除视图会影响依赖于该视图的 用户权限和角色成员资格
删除视图的注意事项
确认视图名称和来源:在删除视图 之前,需要确认要删除的视图的名 称和来源,以避免误删。
备份数据:在删除视图之前,建议 先备份相关的数据,以防止数据丢 失。
添加标题
添加标题
添加标题
添加标题
检查视图是否被引用:如果视图被其 他对象引用,如存储过程、触发器等, 则无法直接删除。需要先移除引用, 再删除视图。
权限检查:只有具有相应权限的用 户才能删除视图。在删除视图之前, 需要确保用户具有足够的权限。
感谢您的耐心观看
汇报人:XX
删除视图的限制条件
不能删除其他视图或存储过程所依赖的视图。 不能删除正在被其他用户或进程使用的视图。 不能删除包含有复杂查询或存储过程的视图。 删除视图之前需要先删除或修改依赖于该视图的触发器、存储过程等对象。
删除视图的影响范围
删除视图不会影响数据库中的数 据
删除视图不会影响其他视图的定 义
更新视图的删除和修改操作
删除操作:使用 DELETE语句删除视 图中的数据,类似 于删除表中的数据
修改操作:使用 UPDATE语句修改视 图中的数据,类似 于修改表中的数据
注意事项:更新视 图时需要注意视图 的定义和来源表的 数据是否允许更新
更新视图与源表的关 系:更新视图时,如 果视图与源表存在关 联,需要谨慎处理, 避免数据不一致
更新视图的插入操作
插入操作:向视图中插入数据 语法格式:INSERT INTO 视图名 (列1, 列2, ...) VALUES (值1, 值2, ...); 注意事项:插入的数据必须符合视图的定义和约束条件 示例:INSERT INTO view_name (column1, column2) VALUES ('value1', 'value2');

SQL实例-视图

SQL实例-视图

1.使用SQL语句在book1表中创建一个名为v1的视图。

该视图仅查看book1表中“出版社是中国长安”的书的信息。

(本例学习视图应用——基本表的行的子集),并查看v1的信息use bookgocreate view v1asselect*from book1 where出版社='中国长安'goselect*from v12.使用Transact-SQL语句在book数据库中创建一个名为v2的视图。

该视图仅显示book2表中的“书名”和“定价”列。

(本例学习视图应用——基本表的列的子集) ,并查看v2的信息use bookgocreate view v2asselect书名,定价from book1goselect*from v23.使用Transact-SQL语句在book数据库中创建一个名为v3的视图。

要求仅显示书名、定价和作者(如果该书有作者姓名)的信息。

(本例学习视图应用——两个或多个基本表连接组成的查询) ,并查看v3的信息use bookgocreate view v3asselect书名,定价,作者姓名from book1,teacherwhere book1.编号=teacher.编号goselect*from v34.使用Transact-SQL语句创建视图v4,要求显示book1中的编号,teacher中的编号,作者姓名和书名,(有同名字段,必须为字段取别名),查看v4的信息use bookgocreate view v4asselect b.编号 book1的编号,b.书名,t.编号老师的编号,t.作者姓名from book1 b,teacher tgoselect*from v45.使用Transact-SQL语句创建视图v5,使其能显示book1表中各出版社已出版书的本数(本例学习视图应用——基本表的统计汇总),并查看v5的信息use bookgocreate view v5asselect count(*)'本数'from book1goselect*from v56.将视图v1修改为只显示书名,定价,出版社,并且定价大于50的记录。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档