MySQL:视图

什么是视图?

视图是⼀个虚拟的表,它是基于⼀个或多个基本表或其他视图的查询结果集。视图本⾝不存储数
据,⽽是通过执⾏查询来动态⽣成数据。⽤⼾可以像操作普通表⼀样使⽤视图进⾏查询、更新和管
理。视图本⾝并不占⽤物理存储空间,它仅仅是⼀个查询的逻辑表⽰,物理上它依赖于基础表中的数据。
创建视图的语法

sql 复制代码
CREATE VIEW view_name [(column_list)] AS select_statement

视图的优点

  1. 简化复杂查询:通过将复杂的查询逻辑封装在视图中,可以简化应用程序中的 SQL 编写。
  2. 提高数据安全性:可以通过视图限制用户访问特定的列或行,而不需要直接访问基础表。
  3. 数据独立性:如果表结构发生变化,可以通过修改视图来屏蔽这些变化。
  4. 便于数据分析:视图可以预先定义好数据的汇总、筛选等逻辑,方便分析人员直接使用。

创建一个视图

sql 复制代码
create view v_student_socre as(
select s.id, s.name, s.sno, s.age, s.gender, s.enroll_date,
c.id as class_id, c.`name` as class_name,
co.id as course_id, co.`name` as course_name, sc.id as score_id, sc.score
from student s, class c, course co, score sc
where s.class_id = c.id
and sc.student_id = s.id
and sc.course_id = co.id
order by s.id
);

访问视图

sql 复制代码
select * from v_student_socre;
select * from v_student_socre_v1

视图和真实表进行表连接查询

sql 复制代码
select * from v_student_total_points v, student s where v.id = s.id;

修改视图

通过修改真实表会影响视图,通过视图也可以影响真实表

真实表影响视图

sql 复制代码
update score set score = 99 where student_id = 1 and course_id = 1;

视图影响基表

sql 复制代码
update v_student_socre_v1 set score = 99 where score_id = 3;

删除表

语法:

sql 复制代码
drop view view_name;

注意:

修改真实表会影响视图,修改视图同样也会影响真实表

以下视图不可更新:

  • 创建视图时使⽤聚合函数的视图
  • 创建视图时使⽤ DISTINCT
  • 创建视图时使⽤ GROUP BY 以及 HAVING ⼦句
  • 创建视图时使⽤ UNION 或 UNION ALL
  • 查询列表中使⽤⼦查询
  • 在FROM⼦句中引⽤不可更新视图

希望能对大家有所帮助!!!!

相关推荐
寂寞旅行8 小时前
向量数据库Milvus的使用
数据库·milvus
闻哥8 小时前
Redis事务详解
java·数据库·spring boot·redis·缓存·面试
道亦无名9 小时前
aiPbMgrSendAck
java·网络·数据库
面向对象World11 小时前
正点原子Mini Linux 4.3寸800x480触摸屏gt115x驱动
linux·服务器·数据库
dinga1985102612 小时前
mysql之联合索引
数据库·mysql
微风中的麦穗12 小时前
【SQL Server 2019】企业级数据库系统—数据库SQL Server 2019保姆级详细图文下载安装完全指南
大数据·数据库·sqlserver·云计算·个人开发·运维必备·sqlserver2019
zjttsh13 小时前
MySQL加减间隔时间函数DATE_ADD和DATE_SUB的详解
android·数据库·mysql
顾北1213 小时前
SpringCloud 系列 04:Gateway 断言 / 过滤器 / 限流 一站式落地指南
java·开发语言·数据库
禹凕13 小时前
MYSQL——基础知识(NULL 值处理)
数据库·mysql
码云数智-大飞13 小时前
SQL Server 无法启动?常见原因及详细解决方法指南
数据库