视图:
1、是一个虚拟表,并非真是存在;
2、数据库中只存放了视图的定义,没有存放视图中的数据,数据存放在原表中;
3、使用视图查询,还是从原表查询数据,原表数据改变,视图中的数据也会跟着改变
作用:
简化查询,可以把重复使用的查询封装成视图重复使用,使福州的查询易于理解和使用
安全问题:可以对不同的用户,设定不同的视图
视图的创建:
create database mydb_view;
create or replace view view1_emp as select ename,job from emp;
show full tables; ——查看表和视图,可以区别表和视图(区别于show tables)
修改视图:
alter view 视图名 as select 语句
alter view view_emp as select a.deptno,a.dname,a.loc,b.ename,b.sal from dept a,emp b
where a.deptno=b.deptno;
更新视图:
视图的更新实际上更新的也是原表的数据,因为视图本身不存数据,存的是数据结构
有些视图也是可以更新,在视图中的行和基表(即原表)中的行必须是一对一的关系,否则不能更新,
如视图中的结构包含以下的任何一种,都不可更新:
1、出现了聚合函数(sum(),min(),max(),count()等)
2、distinct
3、group by
4、having
5、union 或 union all
6、位于选择列表中的子查询
7、join
8、from 子句中的不可更新视图
9、where 子句中的子查询,引用from 子句中的表
10、仅引用文字值(在该情况下,没有要更新的基本表(即原表))
视图中虽然可以更新数据,但是有很多限制,最好只是将视图作为查询数据的虚拟表,而不要通过视图更新数据。
重命名视图:
rename table 视图名 to 新视图名;
rename table view_emp to my_view1;
删除视图:只会删除视图的定义,不会删除数据
drop view 视图名;