视图
1. 含义:
1) 是虚拟表,和普通表一样使用。
2) 具有临时性,需要则会出现,不需要就可以当不存在。
3) 只保存SQL逻辑,并不保存实际数据。
4)只有当我们去调用视图的时候才会去执行相关语句,如果不调用就不会去占用内存。
2. 视图好处:
1) 重用SQL语句(方便多次利用)。
2) 简化复杂的SQL语句,不必知道它的查询细节。
3)保护数据,提高数据安全性。
3. 视图的创建:
create view 视图名
as
SQL语句;//例如复杂的连表查询语句 From A join B on A.id=B.id join C on A.id=C.id;
4. 视图修改:
方法一:
create or replace view 视图名 //视图若已经存在那么替换成这个新的,若不存在那么创建一个
as
查询语句;
方法二:
alter view 视图名
as
查询语句;
5. 删除视图:
drop view 视图名;
6. 查看视图结构:
desc 视图名;
7. 视图的更新:
视图并不是所有情况都可以更新的,视图的可更新性和视图中查询的定义有关系:
视图一般用来查询的,不是更新的!
以下几种情况下,视图是不能更新的:
(1)包含以下关键字的SQL语句:分组函数(distinct,group by ,having,union,union all)。
(视图更新:mysql中,视图不仅是可查询的,而且是可更新的。这意味着我们可以使用insert或update语句通过可更新视图插入或更新基表的行。 另外,我们还可以使用delete语句通过视图删除底层表的行。)
(2) select 中包含子查询
(3)join
(4)from 一个不能更新的视图
(5)where子句的子查询引用了from子句中的表