视图

什么是视图:

用于保存查询结果的数据集(一张虚拟表),视图中并不保存数据,其数据均来源于真是表中,视图实质上用于封装查询语句的。

示例:

​ 列表查询两个表中满足一些条件的部分数据,此时就会使用两表联查,将结果展示给用户。假设在其他位置也要显示刚才的查询结果,可以将之前的sql语句重写多次,但是这种做法不符合编程规范,此时就可以将以上的查询语句进行提取,提取之后哪里需要再次查询该结果,直接调用该sql语句即可。

​ 此时使用视图来保存查询的结果集,其实质为使用视图来封装刚才的查询语句,后期其他地方若要再次查询该结果,直接调用视图即可,即可查询到相应的数据。

使用

视图的创建

//查询所有员工数据,部门名称,部门地址
SELECT d.*,l.name subjectName,l.loc
FROM teacher d
JOIN location l
ON d.subject_id=l.id

//创建视图
CREATE VIEW v_emp AS SELECT...
CREATE VIEW v_emp(col1,col2,...) AS SELECT...

视图的使用

//视图是虚拟表,所以视图的操作和表的操作一样
//查看视图是否存在:
SHOW TABLES
//查看视图中的数据:
SELECT * FROM v_emp
//删除视图:
DROP VIEW V_xx

注意点:

  1. 视图是虚拟表,并不保存数据,其数据均来源于真实表中。
  2. 真实表的数据发生改变,视图的结果也会发生改变。
  3. 视图是用于保存查询结果的,并不用于执行写操作,逻辑角度上,不要对视图进行增删改操作。
    1. 物理角度上,对视图执行写操作,一定程度上可以成功
      1. 对视图执行改操作,无论视图是来自单表还是多表,都成功
      2. 增删数据
        1. 增加数据
          1. 视图来源于单表-成功
          2. 视图来源于多表-失败
        2. 删除数据
          1. 视图来源于单表-成功
          2. 视图来源于多表-失败
posted @   瓜洲渡雪  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示