【前言】
通常我们在数据库中查询数据时用的是SELECT语句,我们可以用SELECT语句查询任何数据库中的信息,只要数据库有,只要你要。利用SELECT语句,你可以将一个个表通过一些特定的关键字、函数等连接起来,最后生成你想要的结果。但是,我们往往都知道,如果是利用SELECT语句查询到的数据只能作为临时的,不能将它存储起来,下一次再查询相同的信息时只能再次重新进行编写,大大降低了效率。那么,有没有一种方法能够让我将常用到的数据组成一张表并且存储起来,下次想要使用时就可以直接利用某个语句查询就可以呢?
视图,就可以做到这一点!
【正文】
我先来举个示例吧!
<**举例**>
现分别有客户信息表(MemberDetails)、电影类型信息表(Category)、客户最喜爱的电影类型信息表(FavCategory)三张表
<要求>查询喜爱“Horror”电影类型的客户信息
<思路>顾名思义,要求我们查询包含两个点:喜爱“Horror”电影类型的客户有哪些?他们的基本信息(包括名,出生日期等)
<步骤>
1.查询“Horror”电影类型的Id是多少。查询,查询,那肯定是你不知道才要查询。从上图中我们可以看出电影类型的Id包含在Category表中
SELECT CategoryId FROM Category WHERE Category = 'Horror'
生成结果如图:
2.查询喜爱“Horror”电影类型的客户MemberId。联合FavCategory表
SELECT MemberId FROM FavCategory WHERE CategoryId IN (SELECT CategoryId FROM Category WHERE Category = 'Horror' ))
生成结果:
3.查询喜爱“Horror”电影类型的客户具体信息。往往客户的信息一般都专门存储在一张客户信息表中,联合MemberDetails表
SELECT MemberId,FirstName, LastName FROM MemberDetails WHERE MemberId IN (SELECT MemberId FROM FavCategory WHERE CategoryId IN (SELECT CategoryId FROM Category WHERE Category = 'Horror' ))
生成结果:
根据结果,我们完整完成了所要求的了:喜爱“Horror”电影类型的客户具体信息。那么,既然满足了,我们是不是就可以开始创建视图了呢?当然可以了!
4.创建视图。
执行下面语句,让数据库系统保存视图
CREATE VIEW table_Films AS SELECT MemberId,FirstName, LastName FROM MemberDetails WHERE MemberId IN (SELECT MemberId FROM FavCategory WHERE CategoryId IN (SELECT CategoryId FROM Category WHERE Category = 'Horror' ))
现在,在左边的对象资源管理器中我们就能看到刚才创建的视图了
5.创建好一个视图可以在SELECT语句中使用它
SELECT * From table_Films
6.删除视图
DROP VIEW table_Films
以上步骤就是创建一个完整视图的过程了。就像我们所看到的一样,视图就是一种虚拟表,如果别人远程访问你的数据源,它只能允许用户看到所显示的数据,也正是因此加强了数据库的安全性。所查询出来的数据只能查看,不能修改。
通过上面所举的示例,来总结下视图的相关小知识吧!
【小知识】
视图是一种虚拟的表,它允许用户看到或者(有时)更新特定部分的数据。
通过视图为用户提供数据,并限制对用户不应当看到或更新的数据的访问。视图可以是从一个表中提取的记录行或者列的集合,或者可以包含多个表中的数据,这些表在其他的视图中被联合,视图可以包含经过计算的字段、分组过的字段和汇总字段。
好处:
加强了安全性
用户只能看到视图所显示的数据
简化数据访问操作
可以访问远程数据源
注意:
视图不能包含 ORDER BY 子句,除非SELECT语句的选择列表中还有一个 TOP 子句。
视图必须唯一命名
视图所查询出来的数据只能进行查看,不能删改!
创建的视图具有访问权限