数据库中的视图
视图的一些好处:
1、视图能够简化用户的操作;
2、视图使用户能以多钟角度看待同一数据;
3、视图对重构数据库提供了一定程度的逻辑独立性;
4、视图能够对机密数据提供安全保护;
5、适当的利用视图可以更清晰的表达查询;
总结:高效,美观,安全
Oracle对象教程:视图(View)创建使用,视图(View)实际上是一张或者多张表上的预定义查询,这些表称为基表。从视图中查询信息与从表中查询信息的方法完全相同。只需要简单的SELECT…FROM即可。
语法结构:创建视图
CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name AS SELECT查询 [WITH READ ONLY CONSTRAINT] |
语法解析:
1. OR REPLACE:如果视图已经存在,则替换旧视图。
2. FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。
3. NOFORCE:如果基表不存在,无法创建视图,该项是默认选项。
4. WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。
删除视图可以使用“DROP VIEW 视图名称”,删除视图不会影响基表的数据。
执行视图:select * from viewname;
navicat下执行视图的范例:
视图名称为:1027amkm
sql脚本为:
select A.KMID from KW_KM A LEFT JOIN KW_CC B on A.KM_CCID=B.CCID
WHERE B.CC_KSSJ IN(
SELECT CC_KSSJ from kw_cc WHERE CC_KSSJ between to_date('2018/10/27 00:00:00','yyyy-mm-dd hh24:mi:ss')
and to_date('2018/10/27 12:00:00','yyyy-mm-dd hh24:mi:ss'))
sql语句执行视图:SELECT * from "1027amkm";
执行结果:
视图名称为:iswj
sql脚本为:
SELECT
count(*) total,a.KSKM_ISWJ,
(
CASE a.KSKM_ISWJ
WHEN 1 THEN '违纪'
ELSE '未违纪'
END
)是否违纪
from QY_KD b
LEFT JOIN KW_KSKM a on a.KSKM_KDID=b.KDID LEFT JOIN QY_XQ c on b.kd_xqid=c.xqid
WHERE a.KSKM_KMID in(SELECT * from "1027amkm") GROUP BY a.KSKM_ISWJ
sql语句执行视图:SELECT * from "iswj";
执行结果:
【注】视图可以单独使用,也可以向表一样关联使用