1.为啥使用视图
视图是一个表或几个表的映射,是虚表其实我们也可以拿它跟同义词类比下,当然它们还有很多不同 点了.我们可以把视图当作一串串长长的查询语句的同义词来理解.视图有用处主要是
1.简化查询,我们可以基于一个复杂的查询语句来建立一个视图,这样我们以后只要直接查询视图就行
2.限制数据访问.如果只希望某些用户只能访问表中的某几列数据,则可以用这几个列形成一个视图
2.创建视图:
语法:CREATE [OR REPLACE] VIEW view_name[(alias[,alias...])]
AS querySQL [WITH READ ONLY];
如果加上WITH READ ONLY表示只能对视图进行查询,不能做DML操作.
例1: CREATE VIEW v_emp AS
SELECT ename,empno FROM emp
例2: CREATE OR REPLACEVIEW v_emp(yourName,yourNumber) AS
SELECTename,empno FROM empWITH READ ONLY;
3.视图分类
1.简单视图:创建视图时对应的SELECT语句中不包含任何函数,表达式或分组函数.即视图是表的一个子集,只是把表中的一部分或全部数据原样"搬来",不做任何改变.
2.复杂视图:对应的select语句中包含函数,表达式或分组函数.即把表中的数据"搬过来"时还做了些改变.
3.连接视图.视图是基于多个表生成的.简单视图和复杂视图只基于一个表
如果创建视图时加了WITH READ ONLY则这三类视图都只能做查询操作.如果没加的话2,3类视图默认是也只能查询.而1类视图能做INSERT ,UPDATE的操作.
当然简单视图能做DML操作不一定就代表一定能操作成功,它操作完后要看对应的数据有没有违反基表的约束条件.
不能对视图做ALTER操作.删除视图就是DROP VIEW view_name.