mysql--浅谈视图1

这是对自己学习燕十八老师mysql教程的总结,非常感谢燕十八老师。

依赖软件:mysql5.6

系统环境:win

视图(view)

什么是视图?

答:视图是表通过某种运算得到的一个投影,占有一定空间的虚拟表

视图的作用

1、简化查询

2、权限管理

3、数据量大时利用视图进行分表

视图的创建

# 语法
create (algorithm=marge/temptable/undefined) view 视图名 as select语句
# 示例
create view test as 
select goods_id,cat_id,shop_price,goods_name
from goods;

删除视图

# 语法
drop view 视图名

# 示例
drop view test;

视图的修改

# 语法
alter view 视图名 as select语句


# 示例
alter view test as 
select goods_id,cat_id,goods_name
from goods;

视图与表的关系

视图是表的查询结果,自然表的数据改变了,影响视图的结果

反之

视图的数据改变了也会影响表的数据,但是视图并不是一定能被修改的

修改视图的条件

视图的数据必须和表的数据一一对应,就像数学中函数的映射

视图中的algorith

1、merge:  当引用视图时,引用视图的语句和定义视图的语句合并产生作用

# 示例
# 创建视图的语句:
create algorithm=merge view g2 as 
select goods_id,cat_id,goods_name,shop_price 
from goods where shop_price>2000

# 查询视图的语句:
select * from g2  where shop_price < 3000;

# 最终执行的语句:
select goods_id,cat_id,goods_name,shop_price 
from goods 
where shop_price > 2000 and shop_price < 3000

2、temptable:  当应用视图时,更加视图的创建语句建立一张临时表

# 示例
# 创建视图
create algorithm=temptable view g2 as 
select goods_id,cat_id,goods_name,shop_price from goods 
where shop_price > 2000

#查询视图的语句:
select * from g2  where shop_price < 3000;

# 最终执行的2句话: 取数据并放在临时表,然后去查临时表.
Select  goods_id,cat_id,goods_name,shop_price from goods where shop_price > 2000;
========> temptable

# 再次查临时表
Select * from temptable where shop_price< 3000

3、undefined:未定义,系统帮你选择

 

如有错误 欢迎指正

打破当前不满足的方式就是当下默默努力!!!
原文地址:https://www.cnblogs.com/Pang-Jie/p/10917185.html