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

【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查询(即视图的定义)。这个定义保存在数据库的系统目录中。因此,当你创建一个视图时,实际上是在数据库的元数据中添加了一个新的条目,该条目包含了如何从基本表中构建视图的信息。

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

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

相关文章:

  • ESP-ADF esp_dispatcher组件之audio_service子模块连接管理函数详解
  • 艾尔登法环最新3000+MOD大型整合包 5月最新更新
  • 伽利略如何测量光速?一场跨越山头的失败实验
  • 用spring-boot-maven-plugin打包成单个jar有哪些缺点优化方案
  • 最长公共前缀(14)
  • 【STM32】ADC的认识和使用——以STM32F407为例
  • 力扣面试150题--旋转链表
  • 蓝桥杯 7. 晚会节目单
  • ctfshow web入门 web46
  • 上位机知识篇---ARM 汇编语言与寄存器深度讨论
  • 油气地震资料数据中“照明”的含义
  • PostgreSQL运算符
  • leetcode 977. Squares of a Sorted Array
  • donet使用指定版本sdk
  • 硬件工程师面试常见问题(11)
  • Machine Learning HW1 report(Hongyi Lee)
  • [基础]详解C++模板类(完整实例代码)
  • 大鱼吃小鱼开源
  • 蓝桥杯Python案例
  • [蓝桥杯 2021 省 AB] 砝码称重 Java
  • 海南机场拟超23亿元收购美兰空港控股权,进一步聚焦机场主业
  • 湖北鄂州通报4所小学学生呕吐腹泻:供餐企业负责人被采取强制措施
  • 南京106亿元成交19宗涉宅地块:建邺区地块楼面单价重回4.5万元
  • 十四届全国人大常委会举行第四十四次委员长会议
  • 孙磊已任中国常驻联合国副代表、特命全权大使
  • 欢迎回家!神十九返回舱成功着陆