MySQL 视图

数据库还有一种虚拟表,它的结构跟真实表一样,都是二维表,但是不存放数据,数据从真实表中获取,这种表被称为视图

简而言之,视图就是一张虚拟表 ,本身不存真实数据,只存一条查询语句

查视图 = 自动执行提前写好的 SELECT 查询

  • 没有真实数据,数据都来自原数据表

  • 如果真实表里的数据变了,视图里的数据会实时跟着变

  • 每次你查询视图时,MySQL 都会在后台重新执行 定义它的那条 SELECT 语句,从而获取主表中的最新数据

  • 视图的数据不会持久化到磁盘上,而是基于查询结果动态生成

为什么需要视图?

  • 隐藏敏感字段(密码、手机号、薪资),只开放允许查看的字段,做到字段级别权限控制

  • 把多表联查、子查询、统计语句固定成视图,以后直接查视图,不用重复写长 SQL

  • 后端修改原表结构,只需修改视图,前端查询语句不用改动,降低维护成本

创建视图

复制代码
CREATE [on replace] VIEW 视图名称 AS
SELECT 字段1, 字段2, ...
FROM 表名
WHERE 条件;
  • create:创建视图的关键字

  • on replace:可选,表示替换已有视图

  • algorithm:在关键字view前定义,表示视图算法

  • as:表示视图要进行的操作

  • select语句:一个完整的查询语句,表示从某些表或视图中查出某些满足条件的记录,将这些记录导入进视图中。

查询视图

全局查询:

复制代码
SELECT * FROM view_goods;

条件查询:

复制代码
SELECT product_name, service_name 
FROM view_goods 
WHERE price > 100 
ORDER BY price DESC;

查看字段结构:

复制代码
DESC view_goods;

删除视图

复制代码
DROP VIEW view_goods;

视图的本质就是保存查询语句,让程序员可以不需要每次查询都重写一大段查询语句。

修改视图

修改视图是指修改数据库中存在的视图的定义,当基本表中某些字段发生改变时,视图必须修改才能使用。

修改视图的本质,就是用一段新的查询语句去覆盖掉旧的语句

通过create or replace view语句在创建视图时替换已有的同名视图。

复制代码
create or replace view view_goods as
select id,name from goods;

视图数据操作

视图数据操作就是通过视图来查询、添加、修改或删除基本表的数据,因为视图是一个虚拟表,不保存数据;当通过视图操作数据时,实际操作的是基本表的数据。

添加数据

复制代码
insert into view_goods values(17,'图书');

修改数据

使用update语句可以修改基本表的数据

复制代码
update view_goods set name='家电' where id=7;

删除数据

使用delete可以删除基本表的数据

复制代码
delete from view_goods where id=7;
相关推荐
Raink老师7 分钟前
【AI面试临阵磨枪-94】Skill 安全:注入、越权、数据泄露、恶意代码、沙箱?
数据库·安全·面试
kkk哥13 分钟前
weixin121作品集展示微信小程序
java·mysql·微信小程序·ssm·b/s架构·作品集展示微信小程序
程序员二叉23 分钟前
【Redis】 缓存三大问题 + 大Key/热Key 全面解析
数据库·redis·缓存
mit6.82426 分钟前
Agent Memory Management
数据库·人工智能
We Just Keep growing36 分钟前
【MySQL进阶篇】—— 视图、存储过程、存储函数、触发器
数据库·mysql
梦想的颜色1 小时前
MySQL 数据存储结构与查询执行生命周期深度解析
运维·数据结构·数据库·mysql·线程·优化
电商API_180079052472 小时前
免 TOP 入驻,第三方淘宝商品详情 API 快速接入与代码示例
java·大数据·开发语言·数据库·爬虫·数据分析
神龙斗士2402 小时前
增删改查操作
数据库·mysql
Elastic 中国社区官方博客2 小时前
13.7万人,零人工决策:使用 Elasticsearch 实现智能体驱动的灾害响应系统
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
yuzhiboyouye2 小时前
sql增删改查怎么写?有时会不会有联表查询的增删查改
数据库·sql