create view view_03 as select e1.empno bianhao, e1.ename xingming, e1.job zhiwei, e1.mgr lindaobianhao, e2.ename lindaoxingming,
d.dname bumenmingchen, d.loc bumenweizhi
from emp e1 , emp e2 , dept d
where e1.mgr=e2.empno and e1.deptno=d.deptno ;
对刚建立的view_03视图进行查询:
select * from view_03 ;
查询结果如下:
可以发现,在select中指定别名与在view视图中指定别名效果是一样的。
4 查看视图(1)查看视图基本信息:describe 视图名;
查看上一章节创建的视图view_03的基本信息:
describe view_03 ;
describe一般情况下都写成desc,两者是完全等效的。
另外还可以通过“show create view 视图名;”来查看视图详细信息。
(2)查看所有视图
在MySQL中,information_schema数据库下的views表中存储了所有视图的定义,通过对views表的查询,可以查看数据库中说哟视图的详细信息,查询语句如下:
select * FROM information_schema.views ;
部分查询结果如下所示:
5 修改视图(1)使用create or replace view语句修改视图
create or replace view语句从字面上也可以理解:既可以创建视图,也可以修改视图(存在的话就修改,不存在就创建)。create or replace view语句的语法结构与创建视图的create语句语法结构是完全一样的。
修改上文中创建的视图view_01,添加一个部门编号字段(deptno):
create or replace view view_02 (bianhao , xinmin , zhiwei , guyongriqi , yuexin , bumenbiaohao) as select empno , ename , job , hiredate , sal ,
deptno from emp;
再次查询view_02,发现确实多了部门编号这一列:
select * from view_02 ;
(2)使用alter语句修改视图
alter语句是MySQL提供的另一种修改视图的方法,其语法结果与create or replace语句也是基本一样的。
继续修改视图view_02,添加一个奖金字段(comm):
alter view view_02 (bianhao , xinmin , zhiwei , guyongriqi , yuexin , bumenbiaohao , jiangjin) as select empno , ename , job , hiredate , sal ,
deptno , comm from emp;
查看view_01视图:
alter语句与create orreplace语句的区别是当视图不存在是,alter语句会报错。
6 更新视图更新视图是指通过视图来插入、更新、删除表中的数据,因为视图是一个虚拟表,其中是没有数据的。通过视图更新的时候都是转到真实表上进行的。对视图的更新操作也包括update、insert和delete。
(1)update
通过视图将员工编号为7369的员工月薪改为1000,在更新前,其数据为:
select * from view_02 where bianhao=7369;
用update语句进行更新
update view_02 set yuexin=1000 where bianhao=7369;
再次通过视图查看数据,发现数据确实已更新:
再看看真实表中数据有没有更新:
select * from emp where empno=7369;
可以看出,真实表中的数据也一起更新了,说明对视图的更新操作本质上是对真实表的更新。
(2)insert
先创建一个视图view_04,该视图结果与emp表一样:
create view view_04 as select * from emp ;
使用insert语句向view_04视图中插入一条数据: