关于MySQL操作中的视图问题:
本篇博客主要介绍的是关于MySQL中视图的定义,作用,以及创建视图的方法。
视图的作用`
视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,结果集被赋予一个名字,即视图名字。
视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。我们出于对安全的考虑,作为编程人员,我们可以通过视图的操作让用户只能看到我们想让用户看到的内容。
创建视图
创建视图的语法请看示例
create or replace
view view1_emp
as
select ename,job from emp;
修改视图:
alter view view1_emp
as
select a.deptno,a.dname,a.loc,b.ename,b.sal from dept a,emp b where a.deptno=b.deptno;
select*from view1_emp;
在关于视图中也有很多的限制,MySQL的视图在更新视图
某些视图是可更新的。也就是说,可以在UPDATE、 DELETE或INSERT等语句中使用它们,以更新基表的内容,对于可更新的视图,在视图中的行和基表中的行之间必须具有一对一的关系,如果视图包含下述结构中的任何一种,那么它就是不可更新的:
聚合函数(SUM0, MIN0. MAXD.coUNT0等)
DISTINCT GROUPBY HAVING UNION或UNION ALL 位于选择列表中的子查询JOIN FROM子句中的不可更新视图
WHERE子句中的子查询,
引用FROM子句中的表。
仅引用文字值(在该情况下,没有要更新的基本表) 视图中虽然可以更新数据,但是有很多的限制。一般情况下,最好将视图作为查询数据的虚拟表,而不要通过视图更新数据。因为,使用视图更新数据时,如果没有全面考虑在视图中更新数据的限制,就可能会造成数据更新失败。
查询视图:
查询视图和查询表的操作相同:
SELECT * FROM v_emp_10;
此时视图的列名,和创建视图时的列名一致,不一定是原列名:
SELECT id, name, salary FROM v_emp_10;