数据库中的视图

Posted celine

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中的视图相关的知识,希望对你有一定的参考价值。

视图的一些好处:

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";

执行结果:

技术分享图片

 【注】视图可以单独使用,也可以向表一样关联使用


















以上是关于数据库中的视图的主要内容,如果未能解决你的问题,请参考以下文章

Query 数据库中的视图顺序和 codeigniter 中的视图顺序

怎样删除视图中的全部数据 用SQL语言编写。

将保存在数据库 sqlite 中的列表视图中的一行发送到另一个列表视图,并使其与第一个列表视图中的行相同

数据库中的视图比较

在Access表的设计视图中,不能对 进行修改。 A. 数据表视图中的字体 B. 主键 C. 数据表视图中的列标题 D.

如何一次性删除 数据库 中的所有视图