MYSql------视图

什么是视图

  • 定义:视图是一种虚拟的表,它是基于 SQL 查询语句的结果集而建立的。视图并不存储实际的数据,而是根据查询语句从一个或多个实际的表中提取数据,类似于存储在数据库中的预定义查询。
  • 作用
    • 简化复杂查询:可以将复杂的多表连接和筛选操作封装在视图中,用户只需对视图进行简单查询,无需重复编写复杂的 SQL 语句。
    • 数据安全:可以通过视图控制用户对数据的访问权限,只暴露部分表中的数据,隐藏敏感信息或数据列。
    • 逻辑数据独立性:可以在不改变数据库表结构的情况下,对用户提供不同的数据逻辑视图,方便对数据进行重新组织和展示。

视图操作

创建视图
-- 创建一个简单的视图
CREATE VIEW simple_view AS
SELECT column1, column2
FROM table1
WHERE condition;

代码解释

  • CREATE VIEW 是创建视图的关键字。
  • simple_view 是视图的名称,可以根据需要自行命名。
  • AS 后面是一个完整的 SQL 查询语句,此语句会定义视图的数据来源和筛选条件。例如,上述语句会从 table1 中选取 column1column2 列,并根据 condition 进行筛选。
修改视图
-- 修改视图的定义
ALTER VIEW simple_view AS
SELECT column1, column3
FROM table1
WHERE new_condition;

代码解释

  • ALTER VIEW 用于修改已存在视图的定义。
  • 此语句将 simple_view 的查询条件修改为 new_condition,并且将选取的列修改为 column1column3
删除视图
-- 删除视图
DROP VIEW IF EXISTS simple_view;

代码解释

  • DROP VIEW 用于删除视图。
  • IF EXISTS 是可选的,如果视图存在则删除,如果不存在也不会报错。
查看视图
-- 查看所有视图
SHOW FULL VIEWS;

-- 查看视图的详细信息
SHOW CREATE VIEW simple_view;

代码解释

  • SHOW FULL VIEWS 可以查看数据库中的所有视图列表。
  • SHOW CREATE VIEW simple_view 可以查看 simple_view 视图的详细创建语句,包括其定义的 SQL 查询,方便了解视图的具体构成。

小结

视图在 MySQL 中是一种非常有用的工具,它可以提高查询的便利性,将复杂的查询逻辑封装起来,为用户提供简洁的查询接口。

  • 通过创建视图,可以灵活地根据不同的业务需求对数据进行组织和展示,同时可以对用户的访问权限进行控制,保障数据的安全性。
  • 在使用视图时,需要注意其只是一种虚拟的表,它的数据来源于实际的表,当表的数据发生变化时,视图的数据也会相应变化。
  • 创建和修改视图需要谨慎,因为它们会影响到基于这些视图的查询结果,要确保修改后的视图满足业务需求和数据一致性。

在这里插入图片描述

视图和表有什么区别

数据存储

  • :表是存储实际数据的物理结构,数据在表中持久化存储,占用磁盘空间。例如,创建一个 students 表:
CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);
INSERT INTO students (id, name, age) VALUES (1, 'Alice', 20);

在这个例子中,数据被实际存储在 students 表中,当插入数据时,数据会被写入磁盘。

  • 视图:视图不存储实际的数据,它只是一个基于 SQL 查询的虚拟表,是从一个或多个表中检索数据的结果集的映射。例如,创建一个视图:
CREATE VIEW young_students AS
SELECT * FROM students WHERE age < 25;

这里的 young_students 视图并不存储数据,它只是一个从 students 表中筛选出年龄小于 25 岁的学生的查询结果,当对视图进行查询时,会动态执行其对应的 SQL 语句。

数据更新

  • :可以对表中的数据进行插入、更新和删除操作,例如:
INSERT INTO students (id, name, age) VALUES (2, 'Bob', 22);
UPDATE students SET age = 23 WHERE id = 1;
DELETE FROM students WHERE id = 2;
  • 视图:对视图的更新操作具有一定的局限性。对于简单的视图,如果其基础查询不涉及复杂的连接、聚合函数、DISTINCTGROUP BY 等操作,且满足一定的条件,可能可以更新。但对于复杂的视图,如:
CREATE VIEW avg_age AS
SELECT AVG(age) AS average_age FROM students;

这个视图计算了 students 表中年龄的平均值,它是一个聚合结果,不能对其进行插入、更新或删除操作,因为更新这个视图的结果没有明确的逻辑对应到表中的数据修改。

性能

  • :表的性能取决于表的大小、索引、存储引擎等因素。直接对表进行操作可能会涉及大量的数据读写操作。
  • 视图:视图的性能主要取决于其基础查询的性能。如果视图的查询语句复杂,包含多表连接、复杂的筛选和聚合操作,对视图的查询可能会比直接查询表慢。但如果视图简化了复杂的查询,通过优化其基础查询可以提高性能。

维护

  • :表的维护包括数据的插入、删除、更新、添加或删除索引、修改表结构等操作,这些操作会直接影响表中存储的数据。
  • 视图:视图的维护主要涉及修改视图的定义,如修改其基础查询语句,不会影响存储的数据,但可能影响依赖该视图的查询结果。

用途

  • :表是数据库的基础,用于存储原始数据,是构建数据库的基本单元。
  • 视图:视图用于简化复杂的查询,提供数据安全性(通过控制用户对视图的访问),或为不同用户或应用程序提供定制的数据逻辑表示,以隐藏表的部分细节。

权限控制

  • :可以为表设置不同的权限,如插入、更新、删除、查询权限等,权限直接针对表的数据。
  • 视图:可以为视图设置权限,允许用户仅通过视图访问表的部分数据,即使表中有其他敏感数据,也可以通过限制用户对视图的访问来保护数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Matlab的变压器仿真模型建模方法(13):单相升压自耦变压器的等效电路和仿真模型

1.单相升压自耦变压器的基本方程和等效电路 单相升压自耦变压器的接线原理图如图1所示。在建立自耦变压器的基本方程时,仍然把它看成是从双绕组变压器演变而来。在图1中,设节点a到节点b部分的绕组的匝数为,对应于双绕组变压器的原边绕组;节点c到节点a部分的绕组的绕组匝数为…

电脑之故障检测(Computer Fault Detection)

电脑之故障检测 在日常使用电脑的过程中&#xff0c;我们难免会遇到各种各样的故障。从简单的软件冲突到复杂的硬件损坏&#xff0c;这些问题往往让人头疼不已。然而&#xff0c;掌握一些基本的电脑故障检测方法&#xff0c;可以帮助我们快速定位问题所在&#xff0c;并采取相…

Jmeter-压测时接口如何按照顺序执行

Jmeter-压测时接口如何按照顺序执行-临界部分控制器 在进行压力测试时&#xff0c;需要按照顺序进行压测&#xff0c;比如按照接口1、接口2、接口3、接口4 进行执行 查询结果是很混乱的&#xff0c;如果请求次数少&#xff0c;可能会按照顺序执行&#xff0c;但是随着次数增加…

unity学习15:预制体prefab

目录 1 创建多个gameobject 2 创建prefab 2.1 创建prefab &#xff08;类&#xff09; 2.2 prefab 是一个文件 2.3 prefab可以导出 3 创建prefab variant &#xff08;子类&#xff09; 3.1 除了创建多个独立的prefab&#xff0c; 还可以创建 prefab variant 3.2 他…

(七)Linux库的串口开发

文章目录 基于官方提供的串口测试代码部分解析代码部分1. usage 函数2. opt_parsing_err_handle 函数3. sig_handle 函数4. init_serial 函数5. serial_write 函数6. serial_read 函数7. run_read_mode 函数8. run_write_mode 函数9. run_loopback_test 函数 进行测试第一步编译…

【Uniapp-Vue3】创建自定义页面模板

大多数情况下我们都使用的是默认模板&#xff0c;但是默认模板是Vue2格式的&#xff0c;如果我们想要定义一个Vue3模板的页面就需要自定义。 一、我们先复制下面的模板代码&#xff08;可根据自身需要进行修改&#xff09;&#xff1a; <template><view class"…

【机器视觉】OpenCV 图像轮廓(查找/绘制轮廓、轮廓面积/周长、多边形逼近与凸包、外接矩形)

文章目录 7. 图像轮廓7.1 什么是图像轮廓7.2 查找轮廓7.3 绘制轮廓7.4 轮廓的面积和周长7.5 多边形逼近与凸包7.6 外接矩形 OpenCV官网 7. 图像轮廓 7.1 什么是图像轮廓 图像轮廓是具有相同颜色或灰度的连续点的曲线. 轮廓在形状分析和物体的检测和识别中很有用。 轮廓的作用…

20250109使用M6000显卡在Ubuntu20.04.6下跑whisper来识别中英文字幕

20250109使用M6000显卡在Ubuntu20.04.6下跑whisper来识别中英文字幕 2025/1/9 20:57 https://blog.csdn.net/wb4916/article/details/144541848 20241217使用M6000显卡在WIN10下跑whisper来识别中英文字幕 步骤&#xff1a; 1、在NVIDIA的官网下载并安装M6000显卡在WIN10下的最…

EtherCAT转CANopen数字油田的高效解决方案

在数字化时代&#xff0c;油田的管理和运作正经历着深刻的变革。传统的油田监测系统受限于通信技术&#xff0c;往往难以满足实时、高效的数据传输需求。面对这一挑战&#xff0c;开疆智能EtherCAT转CANopen网关应运而生&#xff0c;它以其卓越的性能和高度的兼容性&#xff0c…

C语言——文件IO 【文件IO和标准IO区别,操作文件IO】open,write,read,dup2,access,stat

1.思维导图 2.练习 1&#xff1a;使用C语言编写一个简易的界面&#xff0c;界面如下 1&#xff1a;标准输出流 2&#xff1a;标准错误流 3&#xff1a;文件流 要求&#xff1a;按1的时候&#xff0c;通过printf输出数据&#xff0c;按2的时候&#xff0c;通过p…

Android - NDK :JNI实现异步回调

在android代码中&#xff0c;通过JNI调用c层子线程执行耗时任务&#xff0c;在c层子线程中把结果回调到android层&#xff0c; C语言小白&#xff0c;请批评指正&#xff01; android层代码&#xff1a; import androidx.appcompat.app.AppCompatActivity;import android.os.…

Java Web开发进阶——RESTful API设计与开发

随着分布式系统和微服务架构的流行&#xff0c;RESTful API已成为现代Web应用中后端与前端、第三方系统交互的重要方式。本节将深入探讨RESTful API的设计原则、实现方式以及如何使用Spring Boot开发高效、可靠的RESTful服务。 1. 理解RESTful API的设计原则 1.1 什么是RESTfu…

PWR-STM32电源控制

一、原理 睡眠模式不响应其他操作&#xff0c;比如烧写程序&#xff0c;烧写时按住复位键松手即可下载&#xff0c;在禁用JTAG也可如此烧写程序。 对于低功耗模式可以通过RTC唤醒、外部中断唤醒、中断唤醒。 1、电源框图&#xff1a; VDDA主要负责模拟部分的供电、Vref和Vref-…

深兰科技董事长陈海波应邀为华东师大心理学专业师生做AI专题讲座

12月28日&#xff0c;应上海华东师范大学的邀请&#xff0c;上海市科协常委、上海交通大学博士生导师、深兰科技创始人兼董事长陈海波专程到校&#xff0c;为该校心理学专业的全体师生做了一场关于人工智能推动个人数字化未来的专题讲座。 他在演讲中&#xff0c;首先详细讲述了…

ssh2-sftp-client uploadDir Upload error: getLocalStatus: Bad path: ./public

报错解释 这个错误表明在使用 ssh2-sftp-client 这个Node.js库进行目录上传时遇到了问题。具体来说&#xff0c;是指定的本地路径&#xff08;./public&#xff09;不正确或者不存在。 解决方法&#xff1a; 确认当前工作目录&#xff1a;确保你在执行上传操作时的当前工作目…

Vue指令的综合案例

Vue指令的综合案例 参考文献&#xff1a; Vue的快速上手 Vue指令上 Vue指令下 文章目录 Vue指令的综合案例记事本 列表渲染删除功能添加功能底部统计和清空总代码 结语 博客主页: He guolin-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能…

2025新春烟花代码(二)HTML5实现孔明灯和烟花效果

效果展示 源代码 <!DOCTYPE html> <html lang"en"> <script>var _hmt _hmt || [];(function () {var hm document.createElement("script");hm.src "https://hm.baidu.com/hm.js?45f95f1bfde85c7777c3d1157e8c2d34";var …

# 网络编程 - 轻松入门不含糊

网络编程 - 轻松入门 介绍 网络编程指的是&#xff0c;在网络通信协议下。实现 不同计算机之间 的数据传输&#xff0c;例如 通信、聊天、视频通话 等。 1. 网络编程概述 学习网络编程过程 中我们可以将网络编程理解为 计算机之间的数据交互 但 前提是通…

SAP BC 同服务器不同client之间的传输SCC1

源配置client不需要释放 登录目标client SCC1

【大数据基础】大数据概述

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈大数据技术原理与应用 ⌋ ⌋ ⌋专栏系统介绍大数据的相关知识&#xff0c;分为大数据基础篇、大数据存储与管理篇、大数据处理与分析篇、大数据应用篇。内容包含大数据概述、大数据处理架构Hadoop、分布式文件系统HDFS、分布式数…