SQL-进阶-视图-基础

前言

本篇博客,我讲通过 三个方面讲述视图:视图的含义,视图的使用,为什么要学习视图

其中,视图的使用,

我将会分两个方面进行分析:表的使用:也将主要是“增删改查”,这四个方面的知识;数据的使用(主要是数据的插入)。

插入成功?添加成功?

插入成功:点击运行时,运行不会报错。添加成功:你可以查看你添加的数据。

接下来,将进行本篇的学习

视图的含义

1 视图是一个抽象的表,不可以存储数据

2 视图都是基于一个表来进行操作的

问题

1 为什么说视图是一张抽象的表,应该如果理解,有没有具体的例子?

原因:视图主要依托于基表而存在的,如果没有基表,也就没有 视图。

2 视图不可以存储数据,那我们为什么要学习数据的插入呢,数据的插入,是给谁?

原因:

视图的本身,不可以存储数据的,我们添加数据是向视图的基表添加(基表:与视图相关联的表,我们称之为基表)。为什么添加数据后,当符合当前视图的条件时,会显示添加的数据?

原因:我理解是,视图相当于基表的“孩子”,基表有什么,视图可以通过一定的规则,获取全部,或部分的数据,这也就说明为什么视图本身无法插入数据,但会显示的原因。

3为什么视图是基于一张表?

原因:

视图本身并不存在,是一张抽象的表。是那种看不见摸不着的,只能依托于表而存在

重点:我们接下来对视图的操作 ,其本质是对表的操作

视图的使用

前提 基表是 employee1

1 从表的立场看

1.1 视图的创建

语法格式:create [or replace] view 视图名  as +选择 查找合适的表结构;

要求:创建一个视图,基表是employee1 ,有id,name 两个字段。
代码如下:
create or replace view jj as select id,name ,money from employee1;注意:or replace 可以省略的

当你运行成功之后,你的图形化界面左边,会出现 view (视图)的字样

1.2 视图的修改

注意:视图的修改,是字段层面的应用。

语法格式:create  or replace view 视图名 as +选择 查找合适的表结构 where 条件;

注意:这里的 or replace 是不可以省略的。

要求:再添加一个自段 money  
代码如下:
create or replace view jj as select id,name,money  from employee1
运行结果

1.3 视图的查看

1 查看创建视图的语句

语法格式:show create view 视图名

要求:查看创建视图的语句

代码如下

show create view jj;
运行结果

2 查看视图的数据

语法格式:select 字段列表  from  视图名;

注意:当前操作的视图,是基于之前修改后的视图。

要求:查看当前视图

代码如下

select *from jj;

运行结果

1.4 视图的删除

语法格式:drop view [ if  exists ]  视图名;

要求:删除当前视图

代码如下

drop view if exists jj;

运行结果

视图 jj ,删除成功!

2 从数据 的立场看

2.1 添加数据 

前提:重新创建 视图 jj  

代码如下

create or replace view jj as select id,name,money  from employee1 where id<4;

运行结果

语法格式:insert into 视图名 (字段列表) values (对应的数据值);

实例  1 

要求 给字段 id,name 添加 值 3,“算数”

代码如下

insert into jj(id, name) values (3,'算数');
select *from jj;

运行结果

视图 jj 

基表 employee1 

select *from  employee1 ;

运行结果

发现,视图 jj 和 基表 employee1 查询结果是一样的。

实例  2 

前提 :实例2 ,是在实例1 运行之后。

要求:要求 给字段 id,name 添加 值 30,“算数”

代码如下

insert into jj(id, name) values (30,'算数');
select *from jj;

当点击运行时,是成功的,但 视图 jj  不会出现 新的一行数据。

基表 employee1 

发现 基表 employee1 和 视图 jj 不一样

2.2 注意:通过以上 两个案例 发现,

1 不管怎么添加 基表都是成功的,但视图有时候却不行

2 当我们给视图插入数据时,我们点击运行 ,是不会报错的,但 我们查看视图时却没有显示

原因

1 为什么,视图不行,显示不出?

原因: 我们给视图设了where条件 ,当不满足 条件时,不会显示

2 为什么 不显示,但插入成功,不报错?

原因:我们没有添加 检测选项 (with checked option)不会检测当前视图的条件,但我们要查看当前视图时,内部会判断该条件,不满足,不会显示。

视图的作用

视图的本质 还是对表进行操作,我们可以直接操纵表,来进行一系列的操作,为什么还要提出视图这一概念?大家或多或少都有这些疑问?

原因:

为什么要使用视图?

使用视图的主要原因包括简化用户操作、定制用户数据、简化数据操作、提高数据安全性、合并分离的数据,以及提供额外的安全层和计算列定义。12

  • 简化用户操作:视图可以帮助用户更简单地查询和操作数据。通过视图,用户可以聚焦于特定的数据,而无需编写复杂的SQL语句来关联多个表或使用聚合函数。例如,销售人员可以通过查询特定的视图获取与销售相关的数据,而不必了解底层表的复杂结构。

  • 定制用户数据:根据不同角色的工作人员需要,可以创建专门的视图,以提供定制化的数据访问。例如,采购人员可以查看与采购相关的数据,而敏感信息如采购价格则不会显示在他们的视图中。

  • 提高数据安全性:视图提供了一种机制来限制对特定数据的访问。由于视图是动态生成的,可以控制哪些字段或记录对用户可见。此外,通过创建只读视图,可以确保用户只能检索数据而不能更新数据,从而提供额外的安全层。

  • 合并分离的数据:在大型组织中,可能需要合并来自不同部门或分公司的数据以便统一管理。视图可以帮助将这些分散的数据整合到一个逻辑表中,方便进行数据分析和报告。

  • 简化复杂查询:视图可以隐藏底层表的复杂性,向最终用户和外部应用程序提供一个简化的数据模型。通过使用视图,可以减少编写复杂SQL语句的需求,从而简化复杂的查询操作。

  • 定义计算列:虽然数据库表不应该包含计算列,但视图支持这一功能。例如,可以在订单视图中定义一个计算列来显示订单的总销售额,而无需在底层表中存储这些计算结果。

综上所述,视图在数据库管理中扮演着重要的角色,它们不仅提高了数据访问的效率和安全性,还允许数据库管理员根据用户的特定需求定制数据视图。

总而言之:视图,在我们操作时,扮演着重大的角色,极大地减轻我们的负担。

下一篇博客,我会讲述通过简述:检测选项,来对当前视图的条件进行判断,当不满足条件时,插入不成功;同时下一篇博客中,使用的递归思想,也极大的暗示了视图的作用,方面我们简化代码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值