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

【MySQL数据库】视图

1,视图的基本介绍

        视图是一个虚拟表,其内容由查询定义。与真实表一样的是,视图包含带有名称的列和行数据;与真实表不一样的是,视图本身并不在数据库中存储数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。

        视图返回的数据是从一个或多个基础表(或其它视图)实时提取的。每当查询一个视图时,都会执行视图的定义语句来生成结果集。

2,视图的创建

视图的创建语法:

        create view [视图名] as select [语句]

        说明:上面的 [语句] 是select后面的语句过程

例如:

        有两个表 employee 和 department。employee 表存储员工信息,包括员工ID(id)、姓名(name)、职位(position)、部门ID(d_id)。department 表存储部门信息,包括部门ID(id)和部门名称(name)。

        现在,我们想创建一个视图,这个视图将展示员工的姓名 (name)、职位 (position) 以及他们所属的部门名称 (name)。

        创建满足条件的视图:create view employee_view as select e.name, e.position, d.name d_name from employee e,department d where e.d_id=d.id;

        显示其数据:select * from employee_view;

        注意:MySQL 在创建视图时,要求视图中的每个列都有唯一的名称(因为同名的列存在歧义)。如果有两个或多个列可能具有相同的名称(例如,来自不同表但同名的列),则需要为这些列指定别名。

2,视图的修改

        视图与基本表相关联,若修改了视图,那么基本表的数据会随之更改;若修改了基本表,那么视图的数据也会随之更改。

修改视图

修改基本表

3,视图的删除

删除视图:drop view [视图名];


        通过上面视图的运用,这里对视图来进行全方面的了解。

  1. 视图的数据来源:视图的数据来源于一个或多个基本表,或者其它视图。视图是用来对这些基本表中的数据进行筛选、汇总。当修改视图时,相当于修改基本表。
  2. 视图的动态性:视图的内容是动态的,每当查询视图时,都会执行创建视图时定义的 select 语句来获取最新的数据。这也就是为什么基础表的数据发生了变化,视图也会变化。
  3. 视图简化复杂查询:视图可以用来简化复杂的查询逻辑。例如上面查询两个表的相关数据。
  4. 视图安全性强:通过视图,可以限制用户只能访问特定的数据列和行,从而保护敏感信息不被未授权的用户访问。 

        视图既然不在数据库中存储,那么视图存储在哪里呢?视图本身并不存储实际的数据,而是存储了定义视图的SQL查询(即视图的定义)。这个定义保存在数据库的系统目录中。因此,当你创建一个视图时,实际上是在数据库的元数据中添加了一个新的条目,该条目包含了如何从基本表中构建视图的信息。

        每当查询视图时,数据库会根据视图的定义去查询基本表,并返回结果集。也就是说,视图数据的查询其实是动态生成的,每次查询时访问的都是基本表,尽管它看起来像是一张表,但实际上它并不存储实际的数据,只存储了如何从基本表中提取数据的描述。

        视图的存在主要是为了简化查询、增强安全性等功能,因此,视图不能添加索引。它的动态特性确保了无论何时查询视图,都能获得最新、最准确的数据。

http://www.xdnf.cn/news/3373.html

相关文章:

  • Flutter PIP 插件 ---- 新增PipActivity,Android 11以下支持自动进入PIP Mode
  • ARM ASM
  • 【云原生】基于Centos7 搭建Redis 6.2 操作实战详解
  • 【五一培训】Day1
  • Redis 挂掉后高并发系统的应对策略:使用 Sentinel 实现限流降级与 SkyWalking 监控优化
  • PostgreSQL 数据库下载和安装
  • Stm32 烧录 Micropython
  • 基于机器学习的舆情分析算法研究
  • 连接linux虚拟机并运行C++【从0开始】
  • 机器学习实战,天猫双十一销量与中国人寿保费预测,使用多项式回归,梯度下降,EDA数据探索,弹性网络等技术
  • vue中$set原理
  • Meta公司于2025年4月29日正式推出了全新Meta AI应用程序的首个版本
  • 正则表达式:精准匹配,高效处理文本
  • 《软件设计师》复习笔记(11.1)——生命周期、CMM、开发模型
  • 结构模式识别理论与方法
  • JWT Access Token 被窃取的风险与解决方案
  • spring-boot-maven-plugin 将spring打包成单个jar的工作原理
  • 企业经营系统分类及功能详解
  • 华为eNSP:IS-IS认证
  • 机器人--主机--控制系统
  • Python 常用内置函数详解(九):type()函数——获取对象类型或获取一个新的类型对象
  • RAG工程-基于LangChain 实现 Advanced RAG(预检索-查询优化)(上)
  • 2025华东杯数学建模B题完整分析论文(共36页)(含模型、代码、数据)
  • 分享5款开源、美观的 WinForm UI 控件库
  • 【Linux网络】I/O多路转接技术 - poll
  • DAY01:Vue零基础入门:环境搭建与核心语法深度解析
  • 数据库Mysql_约束
  • 第二章 日志分析-apache日志分析(玄机系列)
  • 【论文阅读26】贝叶斯-滑坡预测-不确定性
  • 图解 Git 工作流:理解 Rebase、Merge 与 Pull Request 的区别