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';