MySQL—视图详解

ops/2024/9/24 15:20:23/

基本介绍

视图概念:视图是一种虚拟存在的数据表,这个虚拟的表并不在数据库中实际存在。

本质:将一条 SELECT 查询语句的结果封装到了一个虚拟表中,所以在创建视图的时候,工作重心要放在这条 SELECT 查询语句上。

作用:将一些比较复杂的查询语句的结果,封装到一个虚拟表中,再有相同查询需求时,直接查询该虚拟表。

优点:

  • 简单:使用视图的用户不需要关心表的结构、关联条件和筛选条件,因为虚拟表中已经是过滤好的结果集。
  • 安全:使用视图的用户只能访问查询的结果集,对表的权限管理并不能限制到某个行某个列。
  • 数据独立:一旦视图的结构确定,可以屏蔽表结构变化对用户的影响。源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

视图创建

创建视图

创建视图的语法如下:

CREATE [OR REPLACE] 
VIEW 视图名称 [(列名列表)] 
AS 查询语句
[WITH [CASCADED | LOCAL] CHECK OPTION];

1、OR REPLACE:如果视图已经存在,则替换它。

2、列名列表:可选,指定视图的列名,如果不指定,则使用查询语句中的列名。

3、查询语句:定义视图的 SELECT 查询语句。

4、WITH [CASCADED | LOCAL] CHECK OPTION:决定是否允许更新数据使记录不再满足视图的条件。

  • LOCAL:只要满足本视图的条件就可以更新。
  • CASCADED:必须满足所有针对该视图的所有视图的条件才可以更新,默认值。

例如,创建一个视图 employee_view,只显示 id、name 和 salary 列:

create table employees
(id     int primary key auto_increment,name   varchar(20)    not null,salary decimal(10, 2) not null
);
CREATE VIEW employee_view AS
SELECT id, name, salary
FROM employees;

视图查询

查询所有数据表和视图

SHOW TABLES;
SHOW TABLE STATUS [\G];

查询视图

SELECT * FROM 视图名称;

例如,查询 employee_view:

SELECT * FROM employee_view;

查询某个视图的创建语句

SHOW CREATE VIEW 视图名称;

例如,查询 employee_view 的创建语句:

SHOW CREATE VIEW employee_view;

视图修改

修改视图表中的数据

视图表数据修改会自动修改源表中的数据,因为更新的是视图中的基表中的数据。

UPDATE 视图名称 SET 列名 = 值 WHERE 条件;

例如,更新 employee_view 中 id 为 1 的员工的 salary:

UPDATE employee_view SET salary = 50000 WHERE id = 1;

修改视图的结构

ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW 视图名称 [(列名列表)] 
AS 查询语句
[WITH [CASCADED | LOCAL] CHECK OPTION]

例如,将视图 employee_view 中的 id修改为 id_s:

ALTER VIEW employee_view AS
SELECT id AS id_s, name, salary
FROM employees;

视图删除

删除视图

DROP VIEW 视图名称;

例如,删除 employee_view:

DROP VIEW employee_view;

如果存在则删除

DROP VIEW IF EXISTS 视图名称;

例如,如果 employee_view 存在则删除:

DROP VIEW IF EXISTS employee_view;

总结

视图是一种非常有用的工具,可以帮助简化复杂的查询、提高数据安全性,并确保数据独立性。通过将复杂的查询封装在视图中,用户可以更方便地访问和操作数据,而不必关心底层表的结构和复杂性。视图的创建、查询、修改和删除都有相应的 SQL 语句,可以根据需要灵活使用。


http://www.ppmy.cn/ops/115333.html

相关文章

企业如何做可视化数据看板

在当今快速发展的商业环境中,数据无疑是企业决策的重要依据。而数据的有效展示,尤其是通过可视化数据看板,将直接影响企业的业务表现和决策效率。数聚股份将从多年的从业经验来告知企业如何构建高效的可视化数据看板,为决策提供有…

Spring Security 详解:保护Java应用的强大盾牌

在Java企业级开发中,安全性始终是一个至关重要的考虑因素。Spring Security作为Spring框架的一个重要子项目,提供了一个功能强大、可高度定制的身份验证和访问控制框架,帮助开发者轻松实现应用程序的安全性管理。本文将详细介绍Spring Securi…

iPhone 16 开始支持全新的 JPEG XL 格式

iPhone对互联网世界的再定义一直让人惊叹。特立独行的mov视频格式,m4a音频格式都处处透着自己的野望。 现在,新的iPhone 16 加入了对下一代图像编码标准 JPEG XL 的支持。这又多了一个换机的理由。 注意:JPEG XL 于 2022 年标准化&#xff…

C语言编译四大阶段

目录 一、引言 二、预处理阶段 三、编译阶段 四、汇编阶段 五、链接阶段 六、总结 本文将详细介绍C语言编译的四个阶段,包括预处理、编译、汇编和链接。通过学习这些阶段,读者可以更好地理解C语言程序的编译过程,提高编程效率。 一、引…

Centos7.9在K8s安装生产级别的分布式存储Rook+Ceph

1.介绍 在k8s云原生平台中,存储是除了网络之外的另一个核心,因为他涉及到了数据的保存,以及容灾等一系列的问题,做生产级别的应用,一定要具有多节点分布式,灾备及时恢复,数据平滑迁移等多种特性…

基于MindSpore实现Transformer机器翻译(下)

因本文内容较长,故分为上下两部分。上部分可点击以下链接查看 基于MindSpore实现Transformer机器翻译(上) 编码器(Encoder) Transformer的Encoder负责处理输入的源序列,并将输入信息整合为一系列的上下文…

World of Warcraft [CLASSIC] International translation bug

internationalization i18n_getinternationalizationjs-CSDN博客 1)国际化翻译不完整 Chance on melee and ranged critical strike to increase your attack power by 1262 for 10s. 2)更新美酒节,服务器并发太高,被提出副本 Wo…

Leetcode算法基础篇-位运算

简介 学习链接:位运算(第 13 ~ 14 天) 位运算规则 运算符描述规则|按位或运算符只要对应的两个二进位有一个为 1 1 1 时,结果位就为 1 1 1。&按位与运算符只有对应的两个二进位都为 1 1 1 时,结果位才为 1 …