数据库还有一种虚拟表,它的结构跟真实表一样,都是二维表,但是不存放数据,数据从真实表中获取,这种表被称为视图
简而言之,视图就是一张虚拟表 ,本身不存真实数据,只存一条查询语句
查视图 = 自动执行提前写好的 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;