首页 > 数据库 >SQL视图

SQL视图

时间:2022-12-26 19:00:25浏览次数:39  
标签:Category Horror 视图 查询 SQL WHERE SELECT


前言

通常我们在数据库中查询数据时用的是SELECT语句,我们可以用SELECT语句查询任何数据库中的信息,只要数据库有,只要你要。利用SELECT语句,你可以将一个个表通过一些特定的关键字、函数等连接起来,最后生成你想要的结果。但是,我们往往都知道,如果是利用SELECT语句查询到的数据只能作为临时的,不能将它存储起来,下一次再查询相同的信息时只能再次重新进行编写,大大降低了效率。那么,有没有一种方法能够让我将常用到的数据组成一张表并且存储起来,下次想要使用时就可以直接利用某个语句查询就可以呢?

视图,就可以做到这一点!

 

正文

我先来举个示例吧!

<**举例**>

现分别有客户信息表(MemberDetails)、电影类型信息表(Category)、客户最喜爱的电影类型信息表(FavCategory)三张表

SQL视图_字段

                  

SQL视图_字段_02

SQL视图_数据_03

<要求>查询喜爱“Horror”电影类型的客户信息

<思路>顾名思义,要求我们查询包含两个点:喜爱“Horror”电影类型的客户有哪些?他们的基本信息(包括名,出生日期等)

<步骤>

1.查询“Horror”电影类型的Id是多少。查询,查询,那肯定是你不知道才要查询。从上图中我们可以看出电影类型的Id包含在Category表中

SELECT CategoryId 
FROM Category
WHERE Category = 'Horror'

生成结果如图:

SQL视图_字段_04

 

2.查询喜爱“Horror”电影类型的客户MemberId。联合FavCategory表

SELECT MemberId FROM FavCategory 
WHERE CategoryId IN (SELECT CategoryId FROM Category
WHERE Category = 'Horror' ))

生成结果:

SQL视图_数据库_05

 

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' ))

生成结果:

SQL视图_数据_06

根据结果,我们完整完成了所要求的了:喜爱“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

SQL视图_数据库_07

6.删除视图

DROP VIEW table_Films

 

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

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

 

小知识

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

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

好处:

加强了安全性

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

简化数据访问操作

可以访问远程数据源

注意:

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

视图必须唯一命名

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

创建的视图具有访问权限

 

 

 

标签:Category,Horror,视图,查询,SQL,WHERE,SELECT
From: https://blog.51cto.com/u_15921176/5970414

相关文章

  • SQL外部联合:right outer join、left outer join、full outer join
    SQL将外部联合分为了右外部联合(rightouterjoin)、左外部联合(leftouterjoin)、完全外部联合(fullouterjoin)3个类型。 左外部联合:LEFTOUTERJOIN      ......
  • 16、SQL操作JSON字段
    Mysql5.7版本以后提供一个原生的Json类型,Json值将不再以字符串的形式存储,而是采用一种允许快速读取文本元素(documentelements)的内部二进制(internalbinary)格式。一、Mysq......
  • 10、sqli-labs(盲注8-10)
    环境sqli-labsless8一、通过判断是单引号闭合http://192.168.1.119/sqli/Less-8/?id=1’--+二、我们查询一下数据库有多少字节http://192.168.1.119/sqli/Less-8/?id=1......
  • 关系型数据库学习手记——初见倾心PostgreSQL、MySQL、SQLite、MongoDB
    一、关系型数据库系统理论知识1.1学习笔记​​数据库系统概念读书笔记-引言​​数据库系统概念读书笔记-关系数据库数据库系统概念读书笔记-数据库发展史(上)数据库系统概念......
  • MySQL半一致读实验
    参考资料:https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.htmlhttps://www.yisu.com/zixun/262123.html1、实验环境MySQL5.7RC隔离......
  • Python之PyMysql库
    PyMysql库导入PyMysql库:importpymysqlPyMysql连接对象连接数据库,获得一个PyMysql连接对象connconn=pymysql.connect(host=None,port=0,user=None,......
  • SQL解析调研
    概述在做大数据产品时,经常遇到的一个需求,页面上有一个输入框,可以输入SQL语句,然后获得执行结果。如adhoc。注:本文局限于Java语言。调研Druid阿里的Druid,开源作者推广时,称其为......
  • Aorm又进步了,目前已支持MySQL,MSSQL,Postgres,Sqlite3,并且支持子查询
    hi,各位golang的朋友,我很高兴的告诉你们,Aorm又进步了。Aorm是什么Aorm是一个基于go语言的数据库操作库,可以帮助你更方便的进行数据库操作。它最大的特点是支持空值查询和更新......
  • Aorm又进步了,目前已支持MySQL,MSSQL,Postgres,Sqlite3,并且支持子查询
    hi,各位golang的朋友,我很高兴的告诉你们,Aorm又进步了。Aorm是什么Aorm是一个基于go语言的数据库操作库,可以帮助你更方便的进行数据库操作。它最大的特点是支持空值查询......
  • 基于SqlSugar的开发框架循序渐进介绍(24)-- 使用Serialize.Linq对Lambda表达式进行序列
    在上篇随笔《基于SqlSugar的开发框架循序渐进介绍(23)--Winform端管理系统中平滑增加对WebAPI对接的需求 》中介绍了基于一个接口,实现对两种不同接入方式(直接访问数据库实......