视图是一种虚表,使用CREATE VIEW语句来定义视图,该视图是基于一个或多个表或视图的逻辑表。一个视图本身不包含任何数据, 视图所基于的表称为基表。

视图就相当于一条select 语句,定义了一个视图就是定义了一个sql语句, 视图不占空间,使用视图不会提高性能,但是能简化sql语句 。

创建视图:
create view 视图名;

如:

create or replace view  v_test  as select * from test where age=10;
create or replace: 如果view存在就覆盖,不存在才创建。

删除视图: 

drop view 视图名;

权限控制:

要在您自己的模式中创建视图,您必须具有CREATE VIEW系统特权。
要在其他用户的模式中创建视图,您必须具有CREATE ANY VIEW系统特权。
包含该视图的模式的所有者必须具有从视图所基于的所有表或视图中选择,插入,更新或删除行所必需的权限。

详细语句解析:

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];

其中:

with read only视图只读约束

with check option 不允许插入与where条件不符的记录,类似于check约束的功能.

通过视图修改数据:

CREATE VIEW clerk AS SELECT employee_id, last_name, department_id, job_id FROM employees

WHERE job_id = 'PU_CLERK' or job_id = 'SH_CLERK' or job_id = 'ST_CLERK';

使用视图修改基表的数据,只有员工的ID,姓氏,部门号码和职位在该视图中可见,并且这些列只能在雇员是职员的行中更新:

UPDATE clerk SET job_id = 'PU_MAN' WHERE employee_id = 118;

有限制的修改:

连接视图是其视图子查询包含连接的视图。如果联接中至少有一列具有唯一索引,则可以在联接视图中修改一个基表。

CREATE VIEW locations_view AS

SELECT d.department_id, d.department_name, l.location_id, l.city

FROM departments d, locations l WHERE d.location_id = l.location_id;

新增记录  INSERT INTO locations_view VALUES(999, 'Entertainment', 87, 'Roma'); 

系统返回:ERROR at line 1:

ORA-01776: cannot modify more than one base table through a join view

可以查询系统表USER_UPDATABLE_COLUMNS,查看连接视图中的列是否可更新。

SELECT column_name, updatable  FROM user_updatable_columns

WHERE table_name = 'LOCATIONS_VIEW'    ORDER BY column_name, updatable;

改成如下语句,操作成功

INSERT INTO locations_view (department_id, department_name) VALUES (999, 'Entertainment');

1 row created.

参考文献

oracle官网的Oracle11G-en-US.pdf

Oracle视图 create View的更多相关文章

  1. Oracle视图(view)传参数教程

    废话不多说,直接上例子! 创建包: create or replace package p_view_param is function set_param(num number) return nu ...

  2. 数据库如何创建视图create view

    数据库如何创建视图     创建视图的理想步骤: 一般来说,视图创建可以分为五步走: 第一步:先考虑select语句的编写.我们知道,视图其实就是一个select语句的集合,所以,我们建立视图的第一步 ...

  3. 转: mysql create view 创建视图

    以下的文章主要是对MySQL视图的描述,其中包括MySQ视图L概述,以及创建MySQL视图-create view与修改MySQL视图--alter view等相关内容的具体描述,以下就是文章的具体内 ...

  4. Oracle视图(和Mysq一样l)

    本章内容: Oracle视图介绍与创建.Oracle视图的查询与修改.Oracle的复杂视图 1. Oracle视图介绍与创建 (1)了解常见的数据库对象都有哪些 (2)了解什么是视图以及为什么要使用 ...

  5. Oracle Schema Objects——View

    Oracle Schema Objects Oracle视图View 普通视图.物化视图 视图(视图不包含数据,不是段对象,不占用空间,只是一个代码.) 作用: 简化SQL 为安全,不暴露表的名称 视 ...

  6. Oracle——视图

    视图是一种虚表. 视图建立在已有表的基础上, 视图依赖的这些表称为基表. 视图向用户提供基表数据的另一种表现形式 对视图数据的修改会影响到基表中的数据 视图的优点 控制数据访问 简化查询 避免重复访问 ...

  7. Oracle视图,序列及同义词、集合操作

    一.视图(重点) 视同的功能:一个视图其实就是封装了一个复杂的查询语句.1.创建视图的语法:CREATE VIEW 视图名称 AS 子查询 范例:创建一个包含了20部门的视图CREATE VIEW e ...

  8. Oracle 视图操作

    -- 创建视图create view V_TEST asselect * from T_TEST where rownum <100 select * from V_TEST-- 新建视图用户 ...

  9. 二十八、oracle 视图

    一.介绍视图是一张虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用视 ...

随机推荐

  1. [家里蹲大学数学杂志]第057期图像复原中的改进 TV 模型

    $\bf 摘要$: 本文给出了王大凯等编的<图像处理中的偏微分方程方法>第 6.2 节的详细论述. $\bf 关键词$: 图像复原; TV 模型; matlab 编程 1. 前言 图像在形 ...

  2. Iterate over slices of a string

    def iter_slices(string, slice_length): """Iterate over slices of a string."" ...

  3. 高并发秒杀系统--Service事务管理与继承测试

    [Spring IoC的类型及应用场景]  [Spring事务使用方式] [Spring事务的特性] [Spring事务回滚的理解] [Service声明式事务的配置] 1.配置事务管理器 2.配置基 ...

  4. win10自带邮箱添加网易企业邮箱

    开始-邮件-账户-添加账户-高级安装程序-internet电子邮件-然后输入网易企业邮箱的用户名和相关服务器设置就行了 接收服务器 pop.qiye.163.com发送服务器 smtp.qiye.16 ...

  5. @ReponseBody返回的json中文乱码-遁地龙卷风

    我在mvc配置文件中加上下面这个配置就好了 <mvc:annotation-driven></mvc:annotation-driven>,需要在开头引用如下命名空间xmlns ...

  6. 剑指Offer编程题2——替换空格

    剑指Offer编程题2——替换空格 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happ ...

  7. Mockito框架入门教程(二)

    接上一篇,继续学习其它的.... 8.找出冗余的互动(即未被验证到的) @Test(expected = NoInteractionsWanted.class) public void find_re ...

  8. Vue使用watch监听一个对象中的属性

    问题描述 Vue提供了一个watch方法可以让使用者去监听某些data内的数据变动,触发相应的方法,比如 queryData: { name: '', creator: '', selectedSta ...

  9. 如何使用 Lucene 做网站高亮搜索功能?

    现在基本上所有网站都支持搜索功能,现在搜索的工具有很多,比如Solr.Elasticsearch,它们都是基于 Lucene 实现的,各有各的使用场景.Lucene 比较灵活,中小型项目中使用的比较多 ...

  10. redis-list操作

    List操作,redis中的List在在内存中按照一个name对应一个List来存储.如图: lpush(name,values) # 在name对应的list中添加元素,每个新的元素都添加到列表的最 ...