【MySQL数据库】详细讲解MySQL的视图操作

🎄视图介绍

MySQL 视图是指虚拟的表,它本身不存储数据,而是从一个或多个表中获取数据并进行组合和展示。视图看起来像是一个普通的表,可以用于查询、更新和删除数据,但实际上其存储的是一条 SQL 语句,用于定义视图的结构和数据。

🎄视图特点

可以简化查询操作:通过使用视图,我们可以将复杂的 SQL 查询转换为简单的 SELECT 查询。

可以对查询结果进行过滤和加工:我们可以在视图中加入 WHERE 和 GROUP BY 等条件来对查询结果进行过滤和加工,进一步满足特定的查询需求。

可以提高查询效率:如果视图是从多个表中获取数据,并且每次都需要进行复杂的 JOIN 操作,那么使用视图可以避免重复的 JOIN 操作,从而提高查询效率。

可以保护数据安全:通过限制视图的访问权限,我们可以防止用户访问某些敏感数据。

🌺基本操作

⭐创建视图

create or replace view 视图名(列名列表) as select 语句 ;

sql 复制代码
create or replace view tb_v_1 as select id,name from tb_abc where id>=1;

创建成功后,我们会发现在界面中出现了 视图 这个选项 png)

⭐查询视图

查看创建视图语句

show create view 视图名称;

查看视图数据

select * from 视图名称......;

sql 复制代码
show create view tb_v_1;
sql 复制代码
select * from tb_v_1;

⭐修改视图

方法一

create or replace view 视图名称(列名列表) as select 语句;

sql 复制代码
create or replace view tb_v_1 as select id,name,money from tb_abc where id>=1;

方法二

alter view 视图名称(列名列表) as select 语句;

sql 复制代码
alter view tb_v_1 as select id,name from tb_abc where id>=1;

⭐删除视图

drop view if exist 视图名称视图名称......;

sql 复制代码
drop view if exist tb_v_1;

⭐向视图中插入数据

sql 复制代码
insert into tb_v_1 values(666,'Tom');

🎄视图的检查选项

MySQL 视图的检查选项是指在创建和修改视图时,可以使用的一些选项来检查视图定义是否正确。以下是常用的视图检查选项:

WITH CHECK OPTION:使用该选项可以确保对视图的更新操作符合视图定义的过滤条件。如果更新操作不符合视图定义的过滤条件,将会被拒绝。

WITH CASCADED CHECK OPTION:类似于 WITH CHECK OPTION,但是会递归地应用到所有依赖于当前视图的其他视图。也就是说,如果更新操作不符合当前视图以及依赖于当前视图的其他视图的过滤条件,更新操作将会被拒绝。

WITH LOCAL CHECK OPTION:类似于 WITH CHECK OPTION,但是只会应用到当前视图,不会递归地应用到依赖视图。也就是说,只有当更新操作不符合当前视图的过滤条件时,才会被拒绝。

默认使用WITH CASCADED CHECK OPTION

🎄视图的更新

视图中的行和基础表中的行==必须存在一一对应的关系==

如果视图包含下面任意一项,那么视图不可更新

  • 聚合函数或窗口函数(sum() min() max() count())
  • distinct
  • group by
  • having
  • union
  • union all
相关推荐
打工仔折腾 AI8 分钟前
从零写一个CAD 05:以鼠标为中心的滚轮缩放,招法能复用但顺序不能反
开发语言·后端·python·性能优化·计算机外设·swift·ai agent 实战
geovindu2 小时前
rust: Facade Pattern
开发语言·后端·设计模式·rust·外观模式
颜进强3 小时前
20 · NestJs循环依赖与 forwardRef:容器为什么在环面前会死,"占位再补齐"怎么救
前端·后端·ai编程
颜进强3 小时前
19 · NestJs @Global 落地账:装饰器与 `isGlobal` 参数,各在什么场景上岗
前端·后端·ai编程
她的男孩3 小时前
分片上传的大文件人人可下载:文件模块 isPrivate 在合并时被抹成 false,另有 4 个静默坑
java·后端·架构
颜进强3 小时前
18 · NestJS动态模块与 forRoot:`imports: [ConfigModule.forRoot({...})]` 到底在 import 什么
前端·后端·ai编程
xn71333 小时前
Personal AI Agent 架构实战:Memory、权限、跨 App 与本地/云端设计
人工智能·后端·agent
谢亮_vipxieliang4 小时前
Go defer、panic与recover核心知识点
开发语言·后端·golang
颜进强4 小时前
17 · 自定义 Provider 四形态:useValue / useClass / useFactory / useExisting 到底在选什么
前端·后端·ai编程
碎觉崽4 小时前
我的 QQ 机器人被腾讯反复踢下线,折腾了半个月才搞明白
后端