网站首页 > 技术文章 正文
数据库中的视图是一个虚拟表。同真实的表一样,视图包含一系列带有名称的行和列数据。行和列数据来自由定义视图查询所引用的表,并且在引用视图时动态生成。
1.视图概述
视图是从一个或者多个表中导出的,视图的行为与表非常相似,但视图是一个虚拟表。在视图中用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE.修改记录。视图可以使用户操作方便,而且可以保障数据库系统的安全。
2.创建视图
视图中包含了SELECT查询的结果,因此视图的创建基于SELECT语句和已存在的数据 表,视图可以建立在一张表上,也可以建立在多张表上。
创建视图使用CREATE VIEW语句,基本语法格式如下:
CREATE [OR REPLACE] [[NO]FORCE] VIEW
[schema.] view
[(alias,...)inline_constraint(s)]
[out_of_line_constraint (s)]
AS subquery
[
WITH{READ ONLY CHECK OPTION[CONSTRAINT constraint]}
];
其中,CREATE表示创建新的视图;REPLACE表示替换已经创建的视图;[NO]FORCE表示是否强制创建视图;[schema.]view表示视图所属方案的名称和视图本身的名称;[(alias,…)inline_constraint(s)]表示视图字段的别名和内联的名称 [out _of_line_constraint(s)]表示约束,是与inline constraint(s)相反的声命方式;WITH READ ONLY表示视图为只读;WITH CHECKOPTION表示一旦使用该限制,当对视图增加或修改数据时必须满足子查询的条件。
3.修改视图
修改视图是指修改数据库中存在的视图,当基本表的某些字段发生变化的时候,可以通过修改视图来保持与基本表的一致性。Oracle中通过 CREATE OR REPLACE VIEW语句和ALTER语句来修改视图的约束。
Oracle中如果要修改视图,使用CREATE OR REPLACE VIEW语句,语法如下:
CREATE OR REPLACE [[NO]FORCE] VIEW
[schema.] view
[(alias,...)inline_constraint(s)]
[out_of_line_constraint (s)]
AS subquery
[
WITH{READ ONLY CHECK OPTION(CONSTRAINT constraint]}
];
可以看到,修改视图的语句和创建视图的语句是完全一样的。当视图已经存在时,修改语句对视图进行修改;当视图不存在时,创建视图。
ALTER 语句是 Oracle 提供的另外一种修改视图约束的方法。
4.更新视图
更新视图是指通过视图来插入、更新、删除表中的数据,因为视图是一个虚拟表,其中没有数据。通过视图更新的时候都是转到基本表上进行更新的,如果对视图增加或者删除记录,实际上是对其基本表增加或者删除记录。
UPDATE 视图名 SET 字段1=值1
5.删除视图
当视图不再需要时,可以将其删除,删除一个或多个视图可以使用DROP VIEW语句,语法如下:
DROP VIEW view_name
其中,view_name是要删除的视图名称。删除视图必须拥有DROP权限。
6.限制视图的数据操作
对视图数据的增加或更新实际上是操作视图的源表。通过对视图的限制操作,可以提高数据操安全性。
6.1设置视图只读属性
如果想防止用户修改数据,可以将视图设成只读属性。在CREATE OR REPLACE VIEW语句最后加上WITH READ ONLY。
CREATE OR REPLACE VIEW 视图名 AS
SELECT 字段1,字段2,字段n FROM 表
WITH READ ONLY;
6.2设置视图的检查属性
在修改视图的数据时,可以指定一定的检查条件。此时需要使用WITH CHECK OPTION来设置视图的检查属性,表示启动了和子查询条件一样的约束。
CREATE OR REPLACE VIEW 视图名 AS
SELECT 字段1,字段2,字段n FROM 表
WITH CHECK OPTION;
7.Oracle 中视图和表的区别以及联系
视图和表的区别:
①视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,而表不是。
②视图没有实际的物理记录,而基本表有。
③表是内容,视图是窗口。
④表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对 它进行修改,但视图只能用创建的语句来修改。
⑤视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些 SQL语句的集合。从安全的角度来说,视图可以防止用户接触数据表,因而用户不知道表结构。
⑥表属于全局模式的表,是实表;视图属于局部模式的表,是虚表。
⑦视图的建立和删除只影响视图本身,不影响对应的基本表。
视图和表的关系:
视图(View)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有记录)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。
猜你喜欢
- 2024-11-08 基于特定数据Oracle、ClickHouse、ES存储比较
- 2024-11-08 05:springboot使用Druid作为项目数据源(添加视图化监控)
- 2024-11-08 Doris物化视图与索引在京东的典型应用
- 2024-11-08 Oracle各个版本对应的V$,X$视图数量
- 2024-11-08 oracle 动态性能视图 v$session oracle 查看动态性能视图
- 2024-11-08 oracle 动态性能视图 v$sql oracle静态视图和动态视图
- 2024-11-08 Oracle P6培训系列:09定义计划编制视图
- 2024-11-08 仪表板展示|DataEase可视化数据分析工具中的视图钻取和联动设置
- 2024-11-08 数据库笔试面试144——在Oracle中,物化视图的作用是什么?
- 2024-11-08 oracle 动态性能视图 v$process oracle view性能
你 发表评论:
欢迎- 617℃几个Oracle空值处理函数 oracle处理null值的函数
- 610℃Oracle分析函数之Lag和Lead()使用
- 599℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 595℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 591℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 582℃【数据统计分析】详解Oracle分组函数之CUBE
- 572℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 560℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- PageHelper - 最方便的 MyBatis 分页插件
- 面试二:pagehelper是怎么实现分页的,
- MyBatis如何实现分页查询?(mybatis-plus分页查询)
- SpringBoot 各种分页查询方式详解(全网最全)
- 如何在Linux上运行exe文件,怎么用linux运行windows软件
- 快速了解hive(快速了解美国50个州)
- Python 中的 pyodbc 库(pydbclib)
- Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 故障分析 | MySQL 派生表优化(mysql pipe)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)