在单表上创建视图
#例如:隐藏emp表中的sal和comm字段。
create view v1_emp as select empno, ename, job, mgr, hiredate, deptno from emp ;
在多表上创建视图
#在emp表和dept表的基础上创建视图
create view v2_emp as select e.empno, e.ename, e.job, d.deptno, d.dname, d.loc from emp e inner join dept d on e.deptno=d.deptno;
在其他视图上创建视图
create view v3_emp as select empno,ename,job,deptno,dname from v2_emp where loc='new york';
查看当前数据库中所有的视图
show table;
使用SHOW TABLE STATUS语句查看视图
show table status [{from | in} 视图所在数据库名] [like 'pattern'];
使用DESCRIBE语句查看视图
desc 视图名;
修改视图
#使用create or replace语句
#例如:将v1_emp视图中empno字段隐藏。
create or replace view v1_emp as select ename, job, mgr, hiredate, deptno from emp;
#使用alter view语句
#例如:将v1_emp视图中hiredate字段隐藏。
alter view v1_emp as select ename, job, mgr, deptno from emp;
删除视图
DROP VIEW语句可以删除一个或多个视图,语法格式:
drop view [if exists] view_name1 [, view_name2] ...
使用INSERT语句更新视图
更新视图的操作实际上是对基础表的增加、删除和更新操作。
更新视图时的限制条件
- 包含运算符号时不可更新如sum(),min() …
- 视图中包含DISTINCT、GROUP BY、HAVING、UNION或者UNION ALL关键字
- 视图中的SELECT语句包含子查询。
- 视图引用的只是文字值(也成为常量视图,这种情况下,根本没有要更新的基础表)
- 视图是根据不可更新视图构建的。
- 创建视图时指定了ALGORITHM = TEMPTABLE
- 如果视图是连接视图(在创建视图时使用了JOIN),那么在更新视图时需要谨慎处理