视图

视图

视图是基于一张或多张表或另外一个视图的逻辑表。视图不同于表,视图本身不包含任何数据。表是实际独立存在的实体,是用于存储数据的基本结构。而视图只是一种定义,对应一个查询语句。视图的数据都是来源某些表,这些表被称为基表。通过视图来查看表,就像从不同角度来观察一个或多个表

视图的一些有点:

  • 可以提高数据的访问安全性,通过视图往往只可以访问数据库中表的特定部分,限制了用户访问表的全部行和列。

  • 简化了对数据的查询,隐藏了查询的复杂性。视图的数据来自一个复杂的查询。用户对视图的检索却很简单。

  • 视图是相同数据的不同表示,通过为不同的用户创建一个表的不同视图,使用户可分别访问同一个表的不同部分。

视图可以在表的能够使用的任何地方使用,但在对视图的操作上同表相比有些限制,特别是插入和修改操作。对视图的操作将传递到基表,所以在表上定义的约束条件和触发器在视图上将同样起作用。

  1. 视图的创建

    创建视图需要create view系统权限,视图的创建语法如下:

    CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW 视图名[(列别名1[,列别名2..])]
    as 子查询
    [WITH CHECK OPTION [CONSTRAINT 约束名]]
    [WITH READ ONLY]

    OR REPLACE 表示替代已经存在的视图

    force 表示不管基表是否存在,创建视图

    noforce 表示只有基表存在时,才创建视图,是默认值。

    with check option 更新或者插入数据时满足where条件。

    with read only 只读 不能插入数据

    --eg 给列取别名,后面的子查询不能用*对应。
    create or replace force view v_emp (a,b,c)
    as
    select empname,deptno ,sal from emp where deptno='20'
    with check option
    with read only;

    来自基表的限制

    除了以上的限制,基表本身的限制和约束也要考虑。如果生成子查询的语句是一个分组查询,或查询中出现计算列,这时显然不能对表进行插入。另外,主键和not null列如果没有出现在视图的子查询中,也不能对视图进行插入(插入的数据存入基表时,这些值默认空违反基表约束)。在视图中插入的数据必须满足基表的约束条件。

     

posted @   翻滚的小井蛙  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示