Oracle视图(View)创建使用
视图(View):实际上是一张或者多张表上的预定义查询,这些表称为基表。从视图中查询信息与从表中查询信息的方法完全相同。
优点:
可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基表。
可以将复杂的查询保存为视图。可以对最终用户屏蔽一定的复杂性。
限制某个视图只能访问基表中的部分列或者部分行的特定数据。这样可以实现一定的安全性。
从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。
语法结构:
CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name
AS
SELECT查询
[WITH READ ONLY CONSTRAINT]
语法解析:
OR REPLACE:如果视图已经存在,则替换旧视图。
FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。
NOFORCE:如果基表不存在,无法创建视图,该项是默认选项。
WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。
实例应用:
1.创建一个考勤视图
CREATE OR REPLACE VIEW kq_statistics_view AS SELECT
KQ.KECMC,
kq.KAOQZT,
kq.XINGMING,
kq.KECBH,
kq.QISZ,
kq.JIESZ,
kq.QISJS,
kq.KECZT,
kq.JIAOSXM,
kq.JIAOSGH,
kq.JIAOSMC,
kq.XUEQI,
kq.ZHOUHAO,
kq.SHUAKSJ,
kq.QINGJIAZT,
kq.QINGJIALY,
SINFO.XH,
SINFO.XM,
SINFO.YX,
SINFO.ZY,
SINFO.ZYFX,
SINFO.XSLB,
SINFO.XZ,
SINFO.RXNY,
SINFO.YBYSJ,
SINFO.NJ,
SINFO.BJ,
SINFO.XB,
SINFO.CSRQ,
SINFO.JG,
SINFO.TXDZ,
SINFO.SJHM,
SINFO.JTDZ,
SINFO.qq
FROM
ORG_JWKQ_XUESKCB kq,
ORG_XG_ZHGL_JBXX_XSJBXX sinfo
WHERE
KQ.XUEHAO = SINFO.XH
2.调用视图
WITH stu AS (
SELECT
KQ.BJ,
KQ.NJ,
KQ.CSRQ,
kq.qq,
KQ.KECMC,
kq.KAOQZT,
kq.ZHOUHAO,
kq.JIAOSXM,
SUM (KQ.KAOQZT) OVER (ORDER BY ROWNUM) 累计
FROM
kq_statistics_view kq
WHERE
KQ.XUEQI = '2016-2017春季'
AND KQ.JIAOSXM = '包松涛'
) SELECT
S1.NJ 年级,
S1.bj 班级,
s1.zhouhao 周次,
s1.kecmc 课程名,
s1.JIAOSXM 点名教师,
SUM (1) OVER (ORDER BY ROWNUM) 当前考勤总人次,
S1.累计 当前出勤人次,
SUM (1) OVER (ORDER BY ROWNUM) - s1.累计 当前缺勤人次,
TRUNC (
100 * (
1 - (
s1.累计 / SUM (1) OVER (ORDER BY ROWNUM)
)
),
2
) 当前缺勤率
FROM
stu s1
ORDER BY
S1.zhouhao
Oracle视图
最新推荐文章于 2021-04-21 17:02:05 发布