data数据库实验五视图创建与使用

合集下载

数据库实验五:视图的应用

数据库实验五:视图的应用

数据库实验五:视图的应用一、实验目的与要求: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)基于多个表根据连接操作定义视图。

数据库视图的创建与应用技巧

数据库视图的创建与应用技巧

数据库视图的创建与应用技巧数据库是现代信息系统中不可或缺的组成部分,而视图是数据库中一个重要的概念和工具。

视图是一个虚拟的表,它是基于查询的结果集,可以将多个表中的数据按照特定的逻辑组织起来。

本文将介绍数据库视图的创建与应用技巧,帮助读者更好地理解和应用视图。

一、数据库视图的创建1. 了解视图的定义:视图是一个虚拟的表,它是基于查询的结果集。

视图可以理解为是对多个表的抽象和封装,通过对数据库中的表进行关联和筛选,得到一个逻辑上的数据集,方便用户进行查询和统计分析。

2. 确定视图的目的:在创建数据库视图之前,需要明确视图的目的和使用场景。

是为了简化复杂查询语句、隐藏敏感数据、提供数据访问的安全性,还是为了减少数据冗余,不同的目的可能涉及到不同的表和字段。

3. 编写视图的查询语句:视图的创建需要编写查询语句,查询语句是基于数据库中的表进行关联和筛选得到的。

可以使用数据库的查询语言,如SQL语句,写出满足需求的查询语句。

在编写查询语句时,需要考虑数据的完整性和一致性,避免出现逻辑错误。

4. 创建视图:在数据库管理系统中,可以使用CREATE VIEW语句来创建视图。

CREATE VIEW语句的基本语法是:CREATE VIEW 视图名 AS 查询语句;其中,视图名是指定的视图名称,查询语句是用来创建视图的查询语句。

二、数据库视图的应用技巧1. 简化复杂查询语句:视图可以简化复杂的查询语句,将多个表的关联和筛选抽象成一个视图,从而减少了查询语句的复杂性。

例如,如果我们需要从多个表中查询某个特定属性的数据时,可以将这些表进行关联和筛选得到一个视图,然后在实际查询中直接使用该视图。

2. 提高数据访问安全性:视图可以对数据进行过滤和权限控制,提高了数据访问的安全性。

例如,我们可以创建一个视图,将敏感数据屏蔽起来,并设置只有特定用户才能访问该视图。

通过视图控制数据的可见性,可以有效地保护数据的安全性。

3. 减少数据冗余:视图可以减少数据冗余,实现数据的逻辑集成和管理。

数据库实验5 视图操作

数据库实验5 视图操作

实验五视图操作(2学时)【实验目的】1. 学会使用SQL语句创建和使用视图,加深对视图和SQL Server基表作用的理解。

2. 了解数据库安全控制的机制,以及自主存取控制方法。

【实验要求】1.掌握创建、修改视图的SQL语句的用法。

2.掌握使用企业管管理器创建、修改视图的方法。

3.掌握查看视图的系统存储过程的用法。

4.掌握视图的使用方法。

5.掌握SQL有关用户、角色及操作权限的管理方法。

【实验内容】一、视图操作(一)定义视图以Student 、Course表为基础完成以下视图定义。

1.定义计算机系学生基本情况视图V_Computer。

2.将Student Course 和Student_course表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G。

3.将各系学生人数,平均年龄定义为视图V_NUM_AVG。

4.定义一个反映学生出生年份的视图V_YEAR。

5.将各位学生选修课程的门数及平均成绩定义为视图V_A VG_S_G。

6.将各门课程的选修人数及平均成绩定义为视图V_A VG_C_G。

(二)使用视图1. 查询以上所建的视图结果。

2. 查询平均成绩为90分以上的学生学号、姓名和成绩。

3. 查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩。

4. 按系统计各系平均成绩在80分以上的人数,结果按降序排列。

(三)修改视图1. 通过视图V_IS,分别将学号为“S1”和“S4”的学生姓名更改为“S1_MMM”,”S4_MMM” 并查询结果。

2. 通过视图V_IS,新增加一个学生记录('S12','YAN XI',19,'IS'),并查询结果。

3. 通过视图V_IS,新增加一个学生记录('S13','YAN XI',19,'MA'),并查询结果。

4. 通过视图V_IS,删除学号为“S12”和“S3”的学生信息,并查询结果。

数据库实验数据更新和视图的建立与使用

数据库实验数据更新和视图的建立与使用

实验五实验名称:数据更新和视图的建立与使用一、实验目的1.熟练使用INSERT/DELETE/UPDATE语句进行表的更新操作。

2. 理解视图的定义、视图的优点与视图的工作原理。

掌握在企业管理器和查询分析器中创建、修改及删除视图。

能够熟练掌握利用视图向表中插入、删除和修改数据。

二、实验原理1.数据更新操作只能针对一个表进行,即每次只能在一个表中插入、删除和修改数据。

用INSERT语句可以通过使用V ALUES关键字一次只向一个表插入一条记录,也可以通过子查询向一个表中插入若干条记录;当使用DELETE和UPDATE语句实现表的删除和更改时,若题目中涉及多个表的信息,可以使用子查询来挑选出部分数据,以作为删除或更改的条件,也可以在语句中用FROM 子句给出题目中涉及的所有表,而在WHERE子句中给出多个表之间的连接条件。

2. 利用CREATE VIEW、ALTER VIEW 、DROP VIEW语句创建、修改及删除视图。

由于视图是虚表,通过视图向表中添加数据时必须满足一定的条件。

如果视图引用了多个数据表,那么在通过视图向数据表中添加数据时,这个语句只能指定同一个表中的字段。

如果通过一个引用了多个数据表的视图向这些数据表中添加数据时,必须书写多个INSERT语句。

通过使用多个表的视图对数据表进行更新也需要书写多个UPDATE语句,另外适用于INSERT操作的许多限制同UPDATE操作。

使用DELETE语句可以通过视图将数据表中的数据删除。

但如果视图应用了两个或两个以上的数据表,则不允许删除视图中的数据。

另外,通过视图删除的记录,不能违背视图定义的WHERE子句中的条件限制。

三、实验设备安装有SQL SERVER 2005的计算机。

四、实验内容凡是能用多种方法实现的,请用多种方法实现。

1、为各表添加若干条记录,必须符合实验二中设定的各种约束。

2、将每个员工的薪水上调10%。

3、删除sales表中作废的订单(其发票号码为‘I000000004’),其订货明细表中的数据也一并删除。

实验报告五 视图与索引

实验报告五 视图与索引

实验五视图与索引一.实验目的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),要求显示课程编号.课程名、学分。

实验5 视图的创建与使用

实验5 视图的创建与使用

实验5 视图的创建和使用【实验目的】掌握创建与删除视图的方法掌握更新视图的方法掌握视图的查询操作【实验内容】一、创建视图1、用企业管理器创建视图此实验中以mydb1数据库中的test01、student、course、sc表为基础创建视图。

打开企业管理器,展开左侧窗口树形结构上的数据库节点,选中要创建视图的数据库(这里是mydb1),右击数据库中的“视图”对象,选择“新建视图”命令,如图1所示,就会弹出如图2所示的视图设计器窗口。

图【1】新建视图图【2】视图设计器在视图设计器窗口中右击选择“添加表”或单击工具栏上“添加表”按钮,添加所需要的表。

如图3所示。

图【3】添加表在表窗口中各字段名的前面方框里单击,选择相应的字段,或是在下面“列”的下拉列表框中选择字段,并可在“准则”列中输入提取记录时的过滤条件,在“或”列中输入提取记录所用的附加条件,最后在上面窗口中右击,选择“运行”,则在最下面的窗口中就能看到视图的结果。

如图4所示。

图【4】选择视图内容视图设计完后,点击保存图标,在弹出的“另存为”对话框中输入视图名,此实验为score_view ,最后点击“确定”按钮。

如图5所示。

图【5】保存视图2、使用向导创建视图(略)3、用T-SQL语句创建视图格式:CREATE VIEW view_name[(column1,column2,……)] Asselect_statement[with check option]例:创建所有选课学生的信息视图,如图6所示。

(3)重命名表test001为test01。

当发现表名不恰当的时候,需要为表重新命名。

使用系统存储过程sp_rename 可以为表重新命名,语法如下:sp_rename old_table_name , new_table_name请在查询管理器中输入如下的语句:Use mydb1Gosp_rename test001 , test01 /*EXEC sp_rename test001 , test01 也可以*/Go系统执行,将返回如图6所示的结果。

第5章_视图的创建与使用

第5章_视图的创建与使用

5.2.2使用Transact-SQL语句创建视图 .2.2使用Transact-SQL语句创建视图 使用Transact
使用Transact SQL语言中的 使用 Transact-SQL 语言中的 CREATE VIEW 语 Transact语言中的CREATE VIEW语 句创建视图,其语法形式如下: 句创建视图,其语法形式如下: CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ] ...n [ WITH ENCRYPTION ] AS select_statement [ WITH CHECK OPTION ] [ ; ]
5.1.2 视图的优点
简化数据操作:视图可以简化用户处理数据的方式。 简化数据操作:视图可以简化用户处理数据的方式。 着重于特定数据: 着重于特定数据:不必要的数据或敏感数据可以不出 现在视图中。 现在视图中。 视图提供了一个简单而有效的安全机制, 视图提供了一个简单而有效的安全机制,可以定制不 同用户对数据的访问权限。 同用户对数据的访问权限。 提供向后兼容性: 提供向后兼容性:视图使用户能够在表的架构更改时 为表创建向后兼容接口。 为表创建向后兼容接口。 自定义数据:视图允许用户以不同方式查看数据。 自定义数据:视图允许用户以不同方式查看数据。 导出和导入数据: 导出和导入数据:可使用视图将数据导出到其他应用 程序。 程序。
CHECK OPTION :强制针对视图执行的所有 数据修改语句都必须符合在 select_statement 中设置的条件。 中设置的条件。 ENCRYPTION:对视图文本进行加密。 ENCRYPTION:对视图文本进行加密。
例2 建立一个只包括教师号、姓名和年龄的 建立一个只包括教师号、 视图TeacherView TeacherView。 视图TeacherView。 CREATE VIEW TeacherView AS SELECT tno,tname,tage FROM teachers

数据库实验——视图的创建与使用

数据库实验——视图的创建与使用

数据库实验——视图的创建与使用数据库是一种利用计算机系统来管理、存储、处理数据的技术,视图则是在数据库中使用的一种技术。

视图是一种虚拟表,实际上并不存储数据,而是使用查询语句从一个或多个表中提取所需的数据。

在本次实验中,将学习视图的创建和使用。

一、实验目的1. 理解视图的概念和特点;2. 掌握视图的创建和使用方法;3. 熟悉视图的应用场景。

二、实验内容1. 视图的创建方法;2. 视图的使用方法;3. 视图的实际应用。

三、实验过程1. 视图的创建方法视图的创建方法如下:CREATE VIEW [视图名称] AS [查询语句];例如,要从学生表中提取所有学生的姓名和学号,则可以使用以下语句创建视图:CREATE VIEW student_info AS SELECT sname, sno FROM student;这样,就创建了一个名为student_info的视图,其中包含学生表中的姓名和学号两列数据。

2. 视图的使用方法创建视图之后,可以像使用普通表一样使用视图。

例如,可以使用SELECT语句来查询视图中的数据,如下所示:SELECT * FROM student_info;这样就可以查询出student_info视图中的所有数据。

3. 视图的实际应用视图在实际应用中有很多用途,例如:(1)简化查询语句当数据库中有较多的关联表时,查询语句会变得非常复杂。

此时,可以使用视图来简化查询语句。

例如,以下语句查询学生所在的班级名称:SELECT s.sname, ame FROM student s INNER JOIN class c ON s.classno = c.classno;使用视图后,查询语句可以变得更简洁:CREATE VIEW student_class AS SELECT s.sname, ame FROM student s INNER JOIN class c ON s.classno = c.classno;SELECT * FROM student_class;(2)保护数据安全例如,可以创建只包含学生姓名和学号的视图,而不包含其他敏感数据,以确保保护学生的隐私。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五视图的创建与使用
一、实验目的
(1)理解视图的概念。

(2)掌握创建视图、测试、加密视图的方法。

(3)掌握更改视图的方法。

(4)掌握用视图管理数据的方法。

二、实验内容
1.创建视图
(1)创建一个名为stuview2的水平视图,从数据库Student_info的Student表中查询出性别为“男”的所有学生的资料。

并在创建视图时使用with check option。

(注:该子句用于强制视图上执行的所有修改语句必须符合由Select语句where中的条件。


create view stuview2
as
select
Sno,Sname,Sex,Birth,Classno,Entrance_date,Homeaddr,Sdept,Postcode from Student_20103322
where Sex='男'
with check option
(2)创建一个名为stuview3的投影视图,从数据库Student_info的Course表中查询学分大于3的所有课程的课程号、课程名、总学时,并在创建时对该视图加密。

(提示:用with ENCRYPTION关键子句)
create view stuview3
with ENCRYPTION
as
select Cno,Cname,Total_perior
from Course_20103322
where Credit>3
with check option
(3)创建一个名为stuview4的视图,能检索出“051”班所有女生的学号、课程号及相应的成绩。

create view stuview4
as
select Student_20103322.Sno,Cno,Grade
from Student_20103322,SC_20103322
where Student_20103322.Sno=SC_20103322.Sno
and Classno='051'
and Sex='女'
(4)创建一个名为stuview5的视图,能检索出每位选课学生的学号、姓名、总成绩。

create view stuview5(Sno,Sname,SumGrade)
as
select SC_20103322.Sno,Sname,SUM(Grade)
from SC_20103322,Student_20103322
where SC_20103322.Sno=Student_20103322.Sno
group by SC_20103322.Sno,Sname
2.查询视图的创建信息及视图中的数据
(1)查看视图stuview2的创建信息。

a.通过系统存储过程sp_help查看exec sp_help stuview2
b.通过查询表sysobjects select* from sysobjects
where name='stuview2'
(2) 通过查看视图的定义脚本。

a.通过系统存储过程sp_helptext
exec sp_helptext stuview2
b.通过查询表sysobjects和表syscomments
(提示:视图的名称保存在表sysobjects的name列,定义脚本保存在表syscomments的text列)

select text
from sysobjects,syscomments
where name='stuview2'
and sysobjects.id=syscomments.id
3)查看加密视图stuview3的定义脚本。

exec sp_helptext stuview3
3.修改视图的定义
(1)修改视图stuview3使其从数据库Student_info的Student表中查询总学时大于60的所有课程的课程号、课程名、学分。

(提示:若视图原具有加密保护,修改视图时若未加with encryption子句,则修改后的视图不再加密。


alter view stuview3
with ENCRYPTION
as
select Cno,Cname,Credit
from Course_20103322
where Total_perior>60
4.视图的更名与删除
1)用系统存储过程sp_rename将视图stuview4更名为stuv4。

sp_rename stuview4,stuv4
2)将视图stuv4删除。

drop view stuv4
5.管理视图中的数据
1)从视图stuview2查询出班级为“051”、姓名为“张虹”的资料。

select*
from stuview2
where Classno='051'and Sname='张虹'
2)向视图stuview2中插入一行数据,内容为:
学号姓名班级性别家庭住址入学时间出生年月
20110005 赵小林 054 男南京 2011/09/01 1993/01/09 insert
into
stuview2(Sno,Sname,Classno,Sex,Homeaddr,Entrance_date,Birth,Sdept,Pos tcode)
values('20110005','赵小林','054','男','南京','2011-09-01','1993-01-09','计算机系','211506')
3)查询student,查看表中的内容有何变化。

select*
from Student_20103322
4)向视图stuview2中插入一行数据,内容为:
学号姓名班级性别家庭住址入学时间出生年月
20110006 赵静 054 女南京 2011/09/01 1993/11/09 能成功插入吗?原因何在?
insert
into
stuview2(Sno,Sname,Classno,Sex,Homeaddr,Entrance_date,Birth,Sdept,Pos
tcode)
values('20110006','赵静','054','女','南京','2011-09-01','1993-11-09','计算机系','211506')
不能插入。

因为stuview2的水平视图,是Student_20103322_info数据库的Student_20103322表中查询出的所有性别为“男”的学生资料,插入的新数据性别为“女”,所以不能执行。

5)修改视图stuview2中的数据。

a.将stuview2中054班、姓名为“赵小林”同学的家庭地址改为“扬州市”。

update stuview2
set Homeaddr='扬州市'
where Classno='054'and Sname='赵小林'
b.查询student,查看表中的内容有何变化
select*
from Student_20103322
6)从视图stuview2中将班级为054、姓名为“赵小林”同学删除。

delete
from stuview2
where Sname='赵小林'。

相关文档
最新文档