实验四 创建和使用视图

1.实验目的

  1. 掌握视图的创建、修改和删除。
  2. 掌握使用视图来访问数据。

2.实验内容

  1. 创建视图,使用视图访问数据。
  2. 通过创建的视图更新数据。
  3. 通过创建的视图查询数据。
  4. 修改、删除所创建的视图。

3.实验步骤

根据实验一创建的数据库及基本表,在实验二、三的基础上,运用SQL语句实现以下要求:

    1. 创建学生基本情况视图SubS(包括学号、姓名、出生日期)。

select top 1000 [s_no],[s_name],[s_birthday]

 from [study].[dbo].Student

    1. 创建学生选课情况视图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

    1. 创建学生平均成绩视图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. 在对数据库进行操作的过程中,设置视图机制有什么优点?

1. 数据的抽象和封装:视图可以将复杂的数据查询、计算和过滤操作封装成一个简单的视图,使数据操作更加直观和方便。通过视图,用户可以只关注需要的数据,而不需要了解复杂的表结构和查询语句。

2. 数据安全性:视图可以用于限制用户对数据库中数据的访问权限。通过设置视图,可以控制用户只能访问他们需要的数据,而无法访问其他敏感数据。这对于保护重要的数据和确保数据的隐私非常有用。

3. 数据一致性:通过视图,可以将多个关联的表进行统一的查询和展示,而不需要在每次查询时手动进行关联操作。这可以确保查询结果的一致性,避免了数据冗余和错误。

4. 简化复杂查询:视图可以将多个表的关联查询、数据计算和过滤操作封装成一个简单的视图查询语句,使查询操作更加简洁和高效。这对于复杂的数据查询和报表生成非常有帮助。

5. 提高性能:通过视图,可以预先计算和缓存查询结果,以提高查询的性能。对于经常被查询但很少被修改的数据,可以使用视图来缓存查询结果,减少重复计算的开销。

  1. 对数据库进行操作时,视图与基本表有什么区别?

视图(View)和基本表(Base Table)是数据库中的两种不同的数据访问方式,它们之间存在以下区别:

1. 存储方式:基本表是实际存储数据的表,数据在基本表中以行和列的形式存储。而视图并不存储实际的数据,它只是一个虚拟的表,通过查询操作从基本表中获取数据并以一定的规则进行展示。

2. 数据更新:基本表允许进行插入、更新和删除等操作,可以直接修改实际的数据。而视图一般是基于一个或多个基本表创建的,对视图的更新操作可能会影响到底层的基本表,但对视图本身的更新操作(比如插入、更新和删除)大多数情况下是不允许的。

3. 数据可见性:基本表中的数据对数据库中的所有用户都是可见的。而视图可以限制用户对数据的访问权限,通过视图可以隐藏敏感数据或者限制用户只能访问特定的数据集合。

4. 数据的抽象和封装:视图可以将复杂的数据处理逻辑进行封装,通过视图用户可以只关注自己需要的数据,而不需要了解底层的表结构和查询语句。基本表则需要用户直接操作底层表的结构和数据。

5. 性能与效率:基本表直接存储数据,因此对于频繁的查询操作,直接访问基本表可能更加高效。而视图需要通过查询来获取数据,这可能会引入一定的性能开销,特别是对于复杂的视图查询。

总的来说,视图和基本表在数据存储、数据更新、数据可见性、数据的抽象和封装以及性能与效率等方面存在差异。视图通过提供数据的抽象、封装和访问控制,使得使用者可以更加方便地查询和操作数据,同时也增加了数据的安全性和可维护性。

  • 30
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值