Oracle视图 create View
视图是一种虚表,使用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的更多相关文章
- Oracle视图(view)传参数教程
废话不多说,直接上例子! 创建包: create or replace package p_view_param is function set_param(num number) return nu ...
- 数据库如何创建视图create view
数据库如何创建视图 创建视图的理想步骤: 一般来说,视图创建可以分为五步走: 第一步:先考虑select语句的编写.我们知道,视图其实就是一个select语句的集合,所以,我们建立视图的第一步 ...
- 转: mysql create view 创建视图
以下的文章主要是对MySQL视图的描述,其中包括MySQ视图L概述,以及创建MySQL视图-create view与修改MySQL视图--alter view等相关内容的具体描述,以下就是文章的具体内 ...
- Oracle视图(和Mysq一样l)
本章内容: Oracle视图介绍与创建.Oracle视图的查询与修改.Oracle的复杂视图 1. Oracle视图介绍与创建 (1)了解常见的数据库对象都有哪些 (2)了解什么是视图以及为什么要使用 ...
- Oracle Schema Objects——View
Oracle Schema Objects Oracle视图View 普通视图.物化视图 视图(视图不包含数据,不是段对象,不占用空间,只是一个代码.) 作用: 简化SQL 为安全,不暴露表的名称 视 ...
- Oracle——视图
视图是一种虚表. 视图建立在已有表的基础上, 视图依赖的这些表称为基表. 视图向用户提供基表数据的另一种表现形式 对视图数据的修改会影响到基表中的数据 视图的优点 控制数据访问 简化查询 避免重复访问 ...
- Oracle视图,序列及同义词、集合操作
一.视图(重点) 视同的功能:一个视图其实就是封装了一个复杂的查询语句.1.创建视图的语法:CREATE VIEW 视图名称 AS 子查询 范例:创建一个包含了20部门的视图CREATE VIEW e ...
- Oracle 视图操作
-- 创建视图create view V_TEST asselect * from T_TEST where rownum <100 select * from V_TEST-- 新建视图用户 ...
- 二十八、oracle 视图
一.介绍视图是一张虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用视 ...
随机推荐
- UML建工工具
本篇博文简单介绍一下自己在搜索UML建模工具的过程中收集到的一些信息. 如果想用中文的,可以考虑楚凡科技的Trufun Plato,不过最近好像没有怎么更新了. 很多前辈以前用的是Rational R ...
- 消除导入MNIST数据集发出的警告信息
原本导入数据集你仅需这样: # Import MNIST data from tensorflow.examples.tutorials.mnist import input_data mnist = ...
- day 13 - 1 迭代器
迭代器 首先我们查看下列类型拥有的所有方法(会显示很多) print(dir([])) print(dir({})) print(dir('')) print(dir(range(10))) #求下上 ...
- nc工具使用
0x00 功能说明: 功能强大的网络工具,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本.因为它短小精悍,功能实用,被设计为一个简单.可靠的网络工具,可通过TCP或UDP协议传输 ...
- 仿stl+函数模板
#include<iostream> using namespace std; template<class T> void output(T begin, T end) { ...
- java 类加载机制 阿里面试题
/** * 加载方法不等于执行方法,初始化变量则会赋值 * 类加载顺序应为 加载静态方法-初始化静态变量-执行静态代码块 * 实例化时 先加载非静态方法-实例化非静态变量-执行构造代码块-执行构造函数 ...
- mybatis mapper文件里的<set><trim>
简单介绍:翻看以前在学校写的代码,发现那时候有一个sql写的很有意思,用到了 <set>标签,和我现在写的虽然有点差别,但是效果一样 代码: //mapper里的sql <updat ...
- spring官网上下载历史版本的spring插件,springsource-tool-suite
spring官网下载地址(https://spring.io/tools/sts/all),历史版本地址(https://spring.io/tools/sts/legacy). 注:历史版本下载的都 ...
- SpringBoot 自定义监听器(Listener)
1. 使用场景:在一些业务场景中,当容器初始化完成之后,需要处理一些操作,比如一些数据的加载.初始化缓存.特定任务的注册.开启线程或程序来干某些事情等等. 2. 使用步骤: A. 监听类实现Appli ...
- selenium+python-unittest多线程生成报告
前言 selenium多线程跑用例,这个前面一篇已经解决了,如何生成一个测试报告这个是难点,刚好在github上有个大神分享了BeautifulReport,完美的结合起来,就能生成报告了. 环境必备 ...