mysql数据库中的视图view的概念和详细说明

news2024/11/15 17:39:10

目录

一、定义

二、视图view的分类

(一)按功能和特性分类

1、普通视图(Regular View/Standard View)

2、索引视图(Indexed View)

3、分割视图(Partitioned View/Distributed Partitioned View)

(二)按其他标准分类

1、只读视图

2、可更新视图

二、视图view的主要优点

(一)简化复杂查询

1、封装查询逻辑

2、提高可维护性

(二)隐藏表结构

1、提高数据安全性

2、定制用户数据

(三)简化权限管理

(四)提高数据独立性

(五)重用查询逻辑

(六)提高查询性能

(七)方便理解和操作

三、创建视图view

(一)基本语法

(二)示例

1、创建视图

2、在navicat中实际操作

3、查询视图语句

4、查询视图结果

五、更新视图view

六、删除视图view


一、定义

        MySQL中的视图(View)是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含行和列,但视图不包含在数据库中以存储数据值所占用的物理空间。相反,它包含的是一个SQL语句(称为视图的定义),这个SQL语句从其他表中检索数据,然后可以像表一样进行查询操作。

        通过视图,客户端不再需要知道底层table的表结构及其之间的关系。视图提供了一个统一访问数据的接口。视图简单理解如下:

        通过视图,客户端App不再需要知道底层table的表结构及其之间的关系。视图提供了一个统一访问数据的接口。

二、视图view的分类

        根据不同的分类标准,视图可以分为多种类型。以下是一些常见的分类方式及具体类型:

(一)按功能和特性分类

1、普通视图(Regular View/Standard View)

        也称为标准视图,是最常见的视图类型。它由一个或多个SELECT语句定义,仅包含其定义和被引用表的元数据,并不实际存储数据。当查询视图时,数据库系统会根据视图的定义动态地从基础表中检索数据。

2、索引视图(Indexed View)

        在普通视图的基础上,为视图建立唯一聚集索引,使得视图中的数据物理存储在数据库中。这样,视图就不再仅仅是SELECT语句和表的元数据,而是像表一样拥有了自己的物理存储。索引视图可以显著提高复杂查询的性能,尤其是在数据仓库和决策支持系统中。然而,索引视图也有一些限制,如只能引用基本表,不能包含子查询或某些聚合函数等。

3、分割视图(Partitioned View/Distributed Partitioned View)

        分割视图通常用于在多个数据库或服务器间对数据进行分区。它通过UNION ALL等SQL操作符将多个物理上分布在不同数据库或服务器上的表(称为成员表)连接起来,形成一个逻辑上的完整表。用户可以通过访问这个分割视图来透明地访问所有成员表中的数据,而无需关心数据的物理位置。这种视图在大型分布式系统中特别有用,可以帮助提高数据访问的效率和灵活性。

(二)按其他标准分类

除了上述按功能和特性分类的视图外,还可以根据其他标准对视图进行分类,如:

1、只读视图

        只允许用户通过视图查询数据,不允许更新、删除或插入数据。这通常通过设置适当的权限或使用WITH CHECK OPTION等SQL语法来实现。

2、可更新视图

        允许用户通过视图更新、删除或插入数据。然而,并非所有视图都是可更新的,这取决于视图的定义以及基础表的关系和约束。

二、视图view的主要优点

        视图(View)在数据库管理系统(DBMS)中扮演着重要角色,它并不实际存储数据,而是作为查询结果的逻辑表示。

        视图在数据库管理系统中具有多方面的优点,包括简化复杂查询、隐藏表结构、简化权限管理、提高数据独立性、重用查询逻辑以及提高查询性能等。这些优点使得视图成为数据库设计和应用中不可或缺的一部分。

(一)简化复杂查询

        可以将复杂的查询保存为视图,以后就可以像查询表一样查询视图,从而简化了SQL语句的编写

1、封装查询逻辑

        视图可以将复杂的SQL查询封装起来,使得用户和应用程序能够通过简单的查询语句(如SELECT * FROM view_name)来访问复杂的数据集。这大大降低了直接编写复杂查询语句的难度和出错率。

2、提高可维护性

        当底层表的结构发生变化时,只需调整视图的定义,而不需要修改使用这些视图的应用程序或查询语句,从而提高了数据库的可维护性。

(二)隐藏表结构

1、提高数据安全性

        视图可以隐藏底层表的具体结构,只向用户暴露需要的数据列和行,从而防止用户直接访问敏感数据或执行未授权的操作。

2、定制用户数据

        通过创建不同的视图,可以为不同的用户或角色提供定制化的数据访问权限,实现更细粒度的数据访问控制。

(三)简化权限管理

        集中控制,通过授予用户对视图的访问权限,而不是直接对底层表进行权限控制,可以简化用户权限管理的过程。管理员可以更容易地管理和维护用户的访问权限。

(四)提高数据独立性

        视图可以帮助隔离数据的物理结构变化对用户的影响。当基础表的结构发生变化时(如增加、删除列或修改列名),只要视图的定义保持不变,那么通过视图查询数据的用户就不会受到影响。

        即使需要视图的定义变化,有时候也只要视图的定义相应调整,就可以保持使用视图的应用程序或查询语句的稳定性,从而提高了数据的独立性。

(五)重用查询逻辑

        提高开发效率,视图可以将常用的查询逻辑抽象为视图,以便在多个查询中重用。这不仅可以减少重复编写查询语句的工作量,还可以提高代码的可读性和可维护性。

(六)提高查询性能

        预编译优化,在某些数据库系统中,视图可以被预编译和优化,以提高查询性能。虽然这并非所有数据库系统的普遍特性,但在支持此功能的系统中,视图的使用可以显著提升查询效率。

(七)方便理解和操作

        作为中间层,视图可以作为数据表和用户之间的中间层,简化复杂的查询逻辑和数据关系。对于不熟悉底层表结构的用户来说,视图提供了一个更加直观和易于理解的数据访问接口。

三、创建视图view

(一)基本语法

        在MySQL中,可以使用CREATE VIEW语句来创建视图。基本语法如下:

        CREATE VIEW 视图名称 AS
        SELECT 列名称
        FROM 表名称
        WHERE 条件;

(二)示例

        假设我们有一个employees表,包含id、name、department和salary等列。

1、创建视图

        如果我们想创建一个只包含IT部门员工信息的视图,可以这样做:

CREATE VIEW it_department_employees AS
SELECT employee_id, name, salary
FROM employees
WHERE department_id = 4;

2、在navicat中实际操作

        由图可以看出,操作返回状态成功。

3、查询视图语句

        现在,it_department_employees视图就包含了IT部门所有员工的id、name和salary信息。我们可以像查询表一样查询这个视图:

        SELECT * FROM it_department_employees;

4、查询视图结果

        查询视图结果如下:

        可以看出,非常方便的查到的想要的结果。

五、更新视图view

        虽然视图可以像表一样进行查询,但并非所有视图都可以被更新(即插入、更新或删除数据)。如果视图是从单个表派生而来,并且没有使用聚合函数或分组(GROUP BY)等,那么通常可以更新视图。但是,如果视图涉及多个表或使用了聚合函数等,则可能无法直接更新视图。

        这里就不再举例说明了,有兴趣的可以再沟通。

六、删除视图view

        可以使用DROP VIEW语句来删除视图,例如:

        DROP VIEW IF EXISTS it_department_employees;

        这条语句会检查it_department_employees视图是否存在,如果存在则删除它。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1909729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【pytorch23】MNIST测试实战

理解 训练完之后也需要做测试 为什么要做test? 上图蓝色代表train的accuracy 下图蓝色代表train的loss 基本上符合预期,随着epoch增大,train的accuracy也会上升,loss也会一直下降,下降到一个较小的程度 但是如果只看…

世上最懂交易原理的是佛学

僧肇《肇论不空真论》思想非有非無逻辑 价值观矛盾冲突时(不落两边),血性即行迹逻辑(俗谛),才气即逻辑心证(真谛);意气即是美,美即是意气;一切以…

使用bypy丝滑传递百度网盘-服务器文件

前言 还在为百度网盘的数据集难以给服务器做同步而痛苦吗,bypy来拯救你了!bypy是一个强大而灵活的百度网盘命令行客户端工具。它是基于Python开发的开源项目,为用户提供了一种通过命令行界面与百度网盘进行交互的方式。使用bypy,…

仿写SpringIoc

1.SpringIoc简单注解 1.1 Autowired package com.qcby.iocdemo1.annotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;Target(ElementType.FIEL…

Git 快速上手

这个文档适用于需要快速上手 Git 的用户,本文尽可能的做到简单易懂 ❤️❤️❤️ git 的详细讲解请看这篇博客 Git 详解(原理、使用) 1. 什么是 Git Git 是目前最主流的一个版本控制器,并且是分布式版本控制系统,可…

音视频开发—FFmpeg处理流数据的基本概念详解

文章目录 多媒体文件的基本概念相关重要的结构体操作数据流的基本步骤1.解复用(Demuxing)2.获取流(Stream)3. 读取数据包(Packet)4. 释放资源(Free Resources)完整示例 多媒体文件的…

聚焦云技术,探讨 AGI 时代的云原生数据计算系统

6月22日,开源中国社区在上海举办了 OSC 源创会活动,本期活动以「云技术」为主题,邀请了来自华为 openEuler、字节跳动、AutoMQ 等厂商的技术大咖进行分享,拓数派作为云原生数据计算领域的引领者,受邀参与了本次活动&am…

智慧城市可视化页面怎么做?免费可视化工具可以帮你

智慧城市是一个综合性的概念,广泛应用于各个领域,如基础设施建设、信息化应用、产业经济发展、市民生活品质等。 可视化页面的制作也是一个综合性的过程,需要确定展示内容、数据收集与处理、设计可视化元素等多个环节紧密配合。 1. 明确展示…

MySQL Innodb存储引擎中,当页默认的大小是16K时,页中最多存放多少行的记录?

1、题目引入 Innodb存储引擎是面向行的(row-oriented),也就是说数据的存放按行进行,每页存放的行记录是有硬性定义的,当页默认的大小是16K时,页中最多存放多少行的记录? A、1600 行B、8192 行C、16383 行D、7992 行 …

occ geo

随笔 - 12 文章 - 18 评论 - 117 阅读 - 13万 opencascade造型引擎功能介绍 现今的CAD 系统大多通常都基于CAD 系统提供的二次开发包,用户根据要求定制符合自己要求的功能。AutoCAD就提供了AutoLISP、ADS 等都是比较通用的开发工具包。UG 也提供了多种二次开发…

温州海经区管委会主任、乐清市委书记徐建兵带队莅临麒麟信安调研

7月8日上午,温州海经区管委会主任、乐清市委书记徐建兵,乐清市委常委、副市长叶序锋,乐清市委办主任郑志坚一行莅临麒麟信安调研,乐清市投资促进服务中心及湖南省浙江总商会相关人员陪同参加。麒麟信安董事长杨涛、总裁刘文清热情…

grafana数据展示

目录 一、安装步骤 二、如何添加喜欢的界面 三、自动添加注册客户端主机 一、安装步骤 启动成功后 可以查看端口3000是否启动 如果启动了就在浏览器输入IP地址:3000 账号密码默认是admin 然后点击 log in 第一次会让你修改密码 根据自定义密码然后就能登录到界面…

机器学习笔记:初始化0的问题

1 前言 假设我们有这样的两个模型: 第一个是逻辑回归 第二个是神经网络 他们的损失函数都是交叉熵 sigmoid函数的导数: 他们能不能用0初始化呢? 2 逻辑回归 2.1 求偏导 2.1.1 结论 2.1.2 L对a的偏导 2.1.3 对w1,w2求偏导 w2同…

k8s record 20240708

一、PaaS 云平台 web界面 资源利用查看 Rancher 5台 CPU 4核 Mem 4g 100g的机器 映射的目录是指docker重启后,数据还在 Rancher可以创建集群也可以托管已有集群 先docker 部署 Rancher,然后通过 Rancher 部署 k8s 想使用 kubectl 还要yum install 安…

中国AI大模型论文数量全球第一,清华力压麻省理工、斯坦福

论文是研究新技术、开发新产品获取“图纸”的重要途径之一,OpenAI的研究人员正是借鉴了Transformer的论文(被引用超过9万次),才开发出了对全球各行业影响巨大的产品ChatGPT。 而论文的数量、通过率和被引用次数是衡量一个国家科技…

电脑文件夹怎么设置密码?让你的文件更安全!

在日常使用电脑的过程中,我们常常会有一些需要保护的个人文件或资料。为了防止这些文件被他人未经授权访问,对重要文件夹设置密码是一种有效的保护措施,可是电脑文件夹怎么设置密码呢?本文将介绍2种简单有效的方法帮助您为电脑文件…

红酒与运动后的恢复:健康的双重助力

在繁忙的都市生活中,运动已成为许多人追求健康与活力的方式。当汗水洒落,肌肉得到锻炼,一场酣畅淋漓的运动后,身心仿佛得到了洗礼。而在这份宁静与满足之余,你是否想过,一杯优雅的红酒也能为你的运动后恢复…

以SGET协会OSM标准首创有662引脚的OSM模组——凌华智能引领嵌入式运算市场

在可焊接的45 x 45mm尺寸上提升功率 开启嵌入式运算发展的新时代 摘要: 1.开放式标准模块(OSM™),最大尺寸仅45 x 45mm,采用零开销的模块化系统简化生产,并提供662个引脚以增强小型化和物联网应用。 2.凌华智能提供基于NXP i.M…

二叉树中的最大路径和(Java版)

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root &#xff0c…

AI自动生成PPT哪个软件好?高效制作PPT就用这4个

学生时期做各种小组作业需要做PPT,毕业后开始上班每周大大小小的各种会议和汇报,也少不了PPT的折磨。 倘若你也刚好有这种烦恼,那么不妨试试下面我给大家安利的这4款AI自动生成PPT免费软件~保准你用上以后可不再为PPT制作而发愁!…