视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。
下面用员工表和部门表作为测试表,员工表中的ename代表的是员工的姓名,deptno代表的是员工所在部门的部门号。
部门表中的dname代表的是部门名,deptno代表的是部门的部门号。
基本语法:
create view 视图名 as select语句;
创建视图时会先执行select语句,然后用查询得到的结果来创建视图。
当我们要查询每个员工及其对应的部门名称时,需要使用员工表和部门表进行多表查询,并筛选出员工的部门号等于部门的部门号的记录。
如果该查询结果会被频繁用到,那我们就可以给上述查询结果创建视图。
并且在数据库对应的目录下,会增加一个对应的xxx.frm文件,但并没有与之对应的xxx.ibd文件,这也证明了视图和基表使用的是同一份数据。
我们就可以直接通过查询视图,来查看每个员工及其对应的部门名称了。
通过员工表和部门表,来查看员工名,部门名和部门编号并且按部门名升序排列。
然后将员工’CLARK’的姓名改为’TEST’,再去员工表中查看,会发现数据已经被修改了,我们再查询’CLARK’的信息就查不到了。
首先我们查看 ‘JAMES’ 所在的部门号。
然后我们在基表中将 ‘JAMES’ 的部门设置为10,修改完成以后,我们查看视图中 ‘JAMES’ 的部门名称,会发现发生了变化;
基本语法:
drop view 视图名
比如我们要删除刚刚创建的视图。
并且该视图在数据库目录下对应的xxx.frm文件也会被删除。