当前位置: 首页 > news >正文

【MySQL】(9) 视图

一、什么是视图

        视图是一张虚拟表,是表、其它视图的查询结果集。它本身不像基础表(物理表)一样存储数据,而是将 SQL 查询语句包装起来,通过执行查询语句动态生成数据

二、视图的作用

        当我们需要频繁使用一条查询语句(涉及到多表连接)时,每次都写一遍非常地麻烦,这条查询语句包装成视图(一张表的形式),就可以直接查询联合后的表(视图),让 SQL 语句更简洁

三、创建视图

1、语法

create view 视图名 (查询列表名) as 查询语句

2、示例

        现有一个 SQL 查询语句进行4表连接:

select 
s.id, s.name, s.sno, s.age, s.gender, s.enroll_date, 
c.id, c.`name`, 
co.id, co.`name`, 
sc.id, sc.score 
from student s, class c, course co, score sc
where s.class_id = c.id
and sc.student_id = s.id
and sc.course_id = co.id
order by s.id;

        包装成视图(列名存在重复,如 id、name):

        要么完整列出视图列名,起不重复的列名:

        要么不列出视图列名,在查询语句中给查询列名起别名:

        查询视图:

2、隐藏敏感信息

        比如查询用户的总分,但不能查询用户的个人信息以及各科分数。

        创建一个只包含学生 id、name 和总分的视图(限制只能访问该视图,不能访问 student、score 表即可实现隐藏敏感信息):

3、应用程序与数据库的解耦

        如果客户端或者 Java 应用程序能直接访问数据库中的真实表,一旦真实表结构发生改变,客户端就需要修改 SQL 语句,Java 应用程序也需要修改代码。

        例如:Java 应用程序访问字段的方式有两种:根据查询结果集的列下标访问(字段顺序发生变化需要修改);根据查询结果集的字段名访问(字段名发生变化需要修改)。

        为了让真实表结构发生改变时,客户端或者应用程序不受影响,需要创建一个视图。当真实表改变,修改视图即可

4、视图的优点

  • 简单性。
  • 安全性。
  • 逻辑数独立性:应用程序的逻辑视图与物理存储的结构之间解耦。

四、修改视图

  • 修改基表会影响视图,修改视图会影响基表。
  • 以下视图不可更新:
  1. 使用distinct、聚合函数、group by、having、order by、join、子查询、union、union all 的视图。
  2. from 子句引用不可更新视图的视图。

        示例:创建视图 v_student_score 使用了 order by,无法修改。

五、删除视图

        跟删除真实表一样:

相关文章:

  • 跟我学C++中级篇——控制死锁
  • Qt开发:JSON字符串的序列化和反序列化
  • 【OSG学习笔记】Day 14: 操作器(Manipulator)的深度使用
  • 基于机器学习的电影票房预测
  • 万象生鲜配送系统代码2025年4月29日更新日志
  • LeetCode 155题解 | 最小栈
  • 【Leetcode 每日一题 - 补卡】2302. 统计得分小于 K 的子数组数目
  • Linux电源管理(3)_关机和重启的过程
  • 第十六届蓝桥杯 2025 C/C++组 密密摆放
  • 探索语音增强中的多尺度时间频率卷积网络(TFCM):代码解析与概念介绍
  • AI赋能的问答系统:2025年API接口实战技巧
  • 【Redis——数据类型和内部编码和Redis使用单线程模型的分析】
  • 基于Arduino的STM32F103RCT6最小系统板的测试及串口通讯
  • 深度学习中的优化算法:基础全面解析
  • 聊聊Spring AI Alibaba的PlantUMLGenerator
  • 安装deepspeed时出现了以下的错误,如何解决CUDA_HOME does not exist
  • 【Java面试笔记:进阶】28.谈谈你的GC调优思路?
  • 解决STM32H743单片机USB_HOST+FATF操作usb文件
  • 从 Pretrain 到 Fine-tuning:大模型迁移学习的核心原理剖析
  • 实验六 文件操作实验
  • 王毅:时代不容倒退,公道自在人心
  • 辽宁辽阳火灾3名伤者无生命危险
  • 马上评丨准入壁垒越少,市场活力越足
  • 节前A股持续震荡,“五一”假期持股还是持币过节胜率更高?
  • 浦发银行一季度净利175.98亿增1.02%,不良率微降
  • 中国人寿一季度净利润288亿增39.5%,营收降8.9%