SQL视图

前言

通常我们在数据库中查询数据时用的是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”电影类型的客户具体信息。那么,既然满足了,我们是不是就可以开始创建视图了呢?当然可以了!

①、创建视图

执行下面语句,让数据库系统保存视图

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

②、.删除视图

DROP VIEW table_Films

以上步骤就是创建一个完整视图的过程了。就像我们所看到的一样,视图就是一种虚拟表,如果别人远程访问你的数据源,它只能允许用户看到所显示的数据,也正是因此加强了数据库的安全性。所查询出来的数据只能查看,不能修改。

通过上面所举的示例,来总结下视图的相关小知识吧!!

小知识

视图是一种虚拟的表,它允许用户看到或者(有时)更新特定部分的数据。

通过视图为用户提供数据,并限制对用户不应当看到或更新的数据的访问。视图可以是从一个表中提取的记录行或者列的集合,或者可以包含多个表中的数据,这些表在其他的视图中被联合,视图可以包含经过计算的字段、分组过的字段和汇总字段。

好处:

加强了安全性

用户只能看到视图所显示的数据

简化数据访问操作

可以访问远程数据源

注意:

视图不能包含 ORDER BY 子句,除非SELECT语句的选择列表中还有一个 TOP 子句。

视图必须唯一命名

视图所查询出来的数据只能进行查看,不能删改!

创建的视图具有访问权限

【总结】

使用视图时,可以像操作表一样对视图进行查询、插入、更新和删除操作。但需要注意的是,视图的更新操作可能会受到一些限制,例如,视图中定义了聚合函数、GROUP BY子句或DISTINCT关键字等,这些情况下可能无法直接对视图进行更新操作

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乔努力变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值