1,什么是视图?
视图是一个虚拟表,它的内容由查询定义。同真实表一样,视图包含一系列带有名称的列和行数据。行和列的数据来自于自定义视图的查询所引用的表,并在引用视图时动态生成。简单来说视图是由select结果组成的表。
2,视图的特性:
视图是对若干张基表的引用,不存储具体的数据(基本表数据发生改变,视图也会跟着改变)。可以跟基表一样,进行增删改查操作(增删改操作有条件限制)。
3,创建视图语法:
create [or replace] [algorithm = {undefined | merge | themptable} ] view 视图名 as selec t语句 [ with [ cascaded | local ] check option ];
[ with [ cascaded | local ] check option ]决定了是否允许更新数据使记录不再满足视图的条件。local 只要满足本视图的条件就可以更新;cascaded则必须满足所有所有针对该视图的所有视图的条件才可以更新。如果没有明确是local还是cascaded,则默认是cascaded。
[algorithm = {undefined | merge | temptable} ] merge 处理方式替代式,可以执行更新真实表中的数据。temptable具化式,由于数据存储在临时表中,所以不可以进行更新操作。undefined没有定义 algorithm参数,mysql倾向于选择替代式,因为它更有效。
替代式:操作视图时,视图名直接被视图定义(select语句)替换掉 。
具化式:mysql先得到视图执行的结果,该结果形成一个中间结果暂存在内存中,外面的select语句就调用这些临时表。
例子:create or replace view emp_salary_view
as
select s.id , s.name, a.address from staff as s , address as a where s.address_id = a.id ;
4,修改视图的语法:
alter [or replace] [algorithm = {undefined | merge | themptable} ] view 视图名 as selec t语句 [ with [ cascaded | local ] check option ];
5,删除视图:
drop view [ if exists] 视图名;
6,查看视图:
show tables;(不仅显示表的名字,也会显示视图的名字)
show table status [ from db_name] [ like 'db_name'];(可以通过此命令来查看表或视图的信息,根据comment值信息来判断是视图还是表)
以上就是本人学习mysql视图的总结。