视图概念
视图(View)是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不在数据库中实际存放数据,它的数据来自定义视图时使用的基本表,并且是在使用视图时动态生成的。
为什么要使用视图
- 简化复杂的sql操作,在编写查询后,可以方便的重用它而不必知道它的查询细节。
- 重复使用该sql语句,创建成视图后就可以直接查询视图,反复查询视图,而不用重新编写SQL语句
- 使用表的组成部分而不是整个表。
- 保护数据,可以给用户授予表的特定部分的访问权限而不是整个表。
- 更改数据格式和表示。创建视图时可以更换表的结构
性能问题
采用视图性能会降底
查询视图时才会动态生成相应的SQL语句去查询基本表,得到视图所需要的数据;然后在此基础之上在进行一次查询,然后将结果反馈给用户。这样的处是对外只暴露视图中的数据,而看不到基本表中的所有数据
因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所需的任一个检索。如果是多个联结和过滤创建了复杂的视图或者嵌套了视图,可能会出现性能下降。
视图能否修改
视图的主要目的是用来查询,但是如果向视图中插入数据是要分情况的:
因为向视图中插入数据最终是要插入到基本表中的,用户看到的只是视图中暴露的数据,这些数据来自多少基本表并不清楚,所以视图一般不允许进行插入等修改。
创建视图
- create view 视图名 as select语句;
查看视图
- show tables; 默认会显示表和视图,但不能区分。
- show full tables; 会显示表和视图的类型
删除视图
- drop view viewname;