mysql之视图

mysql视图创建的语句,就不过多赘述,下面提供一个示例。主要讲的是mysql创建视图时的一些特性。

创建视图示例:

create or replace view staff_list_view  as
select s.staff_id,s.first_name,s.last_name,a.address
from staff as s, address as a
where s.address_id = a.address_id

mysql创建视图的时候有一些限制。例如,在from关键字后面不能包含子查询,这和其他的数据库是不同的,如果视图时从其他数据库迁移过来,那么可能需要因此做一些改变,可以将子查询的内容先定义为一个视图,然后对该视图再创建视图就可以实现类似的功能。

一下类型的视图是不可以更新的。

1、包含一下关键字的sql语句:聚合函数(sum、min、max、count等)、distinct、group by、having、union、union all。
2、常量视图
3、select中包含子查询
4、join
5、from一个不能更新的视图
6、where字句的子查询引用了from字句中的表。  

with [cascaded | local] check option
1、local只要满足本视图的条件就可以更新。

2、cascaded则必须满足所有针对该视图的所有视图条件才可以更新。没有写cascaded 还是 local时,默认是cascaded 。

执行show tables命令时,不仅显示表的名字,同时也会显示视图的名字,而不存在单独显示视图的show views命令。

同样在使用show tables status命令时,不但可以显示表的信息,同时也可以显示视图的信息。

show table status like 'staff_list';

查询某个视图的定义

show create view staff_list;

通过系统表information_schema.views也可以查看视图的相关信息。

select * from views where table_name = 'staff_list';
原文地址:https://www.cnblogs.com/songcuiting/p/10395387.html