1.实验目的
- 掌握视图的创建、修改和删除。
- 掌握使用视图来访问数据。
2.实验内容
- 创建视图,使用视图访问数据。
- 通过创建的视图更新数据。
- 通过创建的视图查询数据。
- 修改、删除所创建的视图。
3.实验步骤
根据实验一创建的数据库及基本表,在实验二、三的基础上,运用SQL语句实现以下要求:
-
- 创建学生基本情况视图SubS(包括学号、姓名、出生日期)。
select top 1000 [s_no],[s_name],[s_birthday]
from [study].[dbo].Student
-
- 创建学生选课情况视图S_SC_C(包括学号、姓名、选课名称及成绩)。
create view s_sc_c(s_no,s_name,course_name,score)
as select Student.s_no,s_name,course_no,score
from [study].[dbo].Student,[study].[dbo].Choice
where Student.s_no=Choice.s_no
go
SELECT * FROM s_sc_c
-
- 创建学生平均成绩视图S_Avg(包括学号、平均成绩)。
create view S_Avg(s_no,Avg)
as select Student.s_no,AVG(score)
from [study].[dbo].Student,[study].[dbo].Choice
where Student.s_no=Choice.s_no
group by Student.s_no
go
SELECT * FROM S_Avg
4)创建班级情况视图,包括班号、班级名称、班级人数。
create view C_Class(class_no,class_name,count)
as select Class.class_no,class_name,COUNT(*)
from [study].[dbo].Class
group by class_no,class_name
go
SELECT * FROM C_Class
5)创建教师授课情况视图,包括教师号、教师姓名、授课名称。
create view T_Teaching(t_no,t_name,course_name)
as select Teaching.t_no,Teacher.t_name,Course.course_name
from [study].[dbo].Teaching,[study].[dbo].Teacher,[study].[dbo].Course
where Teaching.t_no=Teacher.t_no and Teaching.course_no=Course.course_no
go
SELECT * FROM T_Teaching
6)运用视图“S_SC_C”,查询姓名为“张彬”的同学的选课名称及成绩。
select course_name,score
from s_sc_c
where s_name='张彬'
7)运用视图“S_Avg”,查询学号为“991102”的同学的平均成绩。
select AVG
from S_Avg
where s_no='991102'
8)删除视图“S_Avg”。
drop view S_Avg
5.思考回答
- 在对数据库进行操作的过程中,设置视图机制有什么优点?
1. 数据的抽象和封装:视图可以将复杂的数据查询、计算和过滤操作封装成一个简单的视图,使数据操作更加直观和方便。通过视图,用户可以只关注需要的数据,而不需要了解复杂的表结构和查询语句。
2. 数据安全性:视图可以用于限制用户对数据库中数据的访问权限。通过设置视图,可以控制用户只能访问他们需要的数据,而无法访问其他敏感数据。这对于保护重要的数据和确保数据的隐私非常有用。
3. 数据一致性:通过视图,可以将多个关联的表进行统一的查询和展示,而不需要在每次查询时手动进行关联操作。这可以确保查询结果的一致性,避免了数据冗余和错误。
4. 简化复杂查询:视图可以将多个表的关联查询、数据计算和过滤操作封装成一个简单的视图查询语句,使查询操作更加简洁和高效。这对于复杂的数据查询和报表生成非常有帮助。
5. 提高性能:通过视图,可以预先计算和缓存查询结果,以提高查询的性能。对于经常被查询但很少被修改的数据,可以使用视图来缓存查询结果,减少重复计算的开销。
- 对数据库进行操作时,视图与基本表有什么区别?
视图(View)和基本表(Base Table)是数据库中的两种不同的数据访问方式,它们之间存在以下区别:
1. 存储方式:基本表是实际存储数据的表,数据在基本表中以行和列的形式存储。而视图并不存储实际的数据,它只是一个虚拟的表,通过查询操作从基本表中获取数据并以一定的规则进行展示。
2. 数据更新:基本表允许进行插入、更新和删除等操作,可以直接修改实际的数据。而视图一般是基于一个或多个基本表创建的,对视图的更新操作可能会影响到底层的基本表,但对视图本身的更新操作(比如插入、更新和删除)大多数情况下是不允许的。
3. 数据可见性:基本表中的数据对数据库中的所有用户都是可见的。而视图可以限制用户对数据的访问权限,通过视图可以隐藏敏感数据或者限制用户只能访问特定的数据集合。
4. 数据的抽象和封装:视图可以将复杂的数据处理逻辑进行封装,通过视图用户可以只关注自己需要的数据,而不需要了解底层的表结构和查询语句。基本表则需要用户直接操作底层表的结构和数据。
5. 性能与效率:基本表直接存储数据,因此对于频繁的查询操作,直接访问基本表可能更加高效。而视图需要通过查询来获取数据,这可能会引入一定的性能开销,特别是对于复杂的视图查询。
总的来说,视图和基本表在数据存储、数据更新、数据可见性、数据的抽象和封装以及性能与效率等方面存在差异。视图通过提供数据的抽象、封装和访问控制,使得使用者可以更加方便地查询和操作数据,同时也增加了数据的安全性和可维护性。