是什么
视图是一种有结构没结果的虚拟表,其结构是从基表中产生的,视图主要用于查询数据。在sql层面上来看,视图就是对select查
询语句的封装,我们看到的虚拟表(也就是视图)就是select语句查询出的结果组成的
视图的作用
视图可以节省sql语句,将一条复杂的查询语句用视图进行保存,之后对视图进行操作即可,方便操作
视图操作主要针对查询,对视图结构进行操作不会影响基表数据,相对安全
可以对外提供有用数据,隐藏关键(无用)数据,保证数据安全
对外提供友好型,不同视图提供不同数据,好像专门对外设计
视图可以更容易的权限控制
视图结构操作
视图的结构操作包括创建视图、修改视图、删除视图、查看视图结构
创建视图
#创建视图
create view user_card
as
select u.name ,c.card_number from user u
left join card c on u.id = c.uid where card_number is not null;
修改视图
# 修改视图
alter view user_card
as
select u.name ,c.card_number from user u left join card c on u.id = c.uid;
查看视图结构
# 查看视图(适用于表的就适用于视图)
-- 查看视图各个字段
desc user_card;-- 查看创建sql语句
show create view user_card;
删除视图
# 删除视图
drop view user_card;
视图数据的操作
单表视图是可以进行新增、删除的,但是不推荐使用视图进行此操作,在这里不做介绍
视图是可以修改数据的,和操作表一样的进行更新数据即可,但是不推荐使用,在这里不做介绍
视图的作用是用来查询数据的,查询视图的sql和查询数据表一样
视图算法
视图算法指的是系统对视图以及外部查询视图的select语句的一种解析方式,分类如下:
temptable | 临时表算法,系统先执行视图的select语句,后执行外部查询语句 |
merge | 合并算法,系统应该先将视图对应的select语句与外部查询视图的select语句进行合并,然后执行(常态、效率高) |
指定算法创建视图的操作
create algorithm=merge view user_card
as
select u.name ,c.card_number from user u
left join card c on u.id = c.uid where card_number is not null;