- 浏览: 349144 次
- 性别:
- 来自: 青岛
文章分类
最新评论
-
贝塔ZQ:
java实现操作word的读取和修改操作,用插件实现的话,可以 ...
java用poi实现对word读取和修改操作 -
yh412:
[flash=200,200][url][img]引用[/im ...
java用poi实现对word读取和修改操作 -
2047699523:
最代码 http://www.zuidaima.com 提供 ...
Java经典代码 -
漫成咖啡:
如何制作卡片型单据 -
geekant:
import com.swing.lx.table 这个包是你 ...
JTable的表头合并
视图的概念 视图是基于一张表或多张表或另外一个视图的逻辑表。视图不同于表,视图本身不包含任何数据。表是实际独立存在的实体,是用于存储数据的基本结构。而视图只是一种定义,对应一个查询语句。视图的数据都来自于某些表,这些表被称为基表。通过视图来查看表,就像是从不同的角度来观察一个(或多个)表。 视图有如下一些优点: * 可以提高数据访问的安全性,通过视图往往只可以访问数据库中表的特定部分,限制了用户访问表的全部行和列。 * 简化了对数据的查询,隐藏了查询的复杂性。视图的数据来自一个复杂的查询,用户对视图的检索却很简单。 * 一个视图可以检索多张表的数据,因此用户通过访问一个视图,可完成对多个表的访问。 * 视图是相同数据的不同表示,通过为不同的用户创建同一个表的不同视图,使用户可分别访问同一个表的不同部分。 视图可以在表能够使用的任何地方使用,但在对视图的操作上同表相比有些限制,特别是插入和修改操作。对视图的操作将传递到基表,所以在表上定义的约束条件和触发器在视图上将同样起作用。 视图的创建 创建视图需要CREAE VIEW系统权限,视图的创建语法如下: CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW 视图名[(别名1[,别名2...])] AS 子查询 [WITH CHECK OPTION [CONSTRAINT 约束名]] [WITH READ ONLY] 其中: OR REPLACE 表示替代已经存在的视图。 FORCE表示不管基表是否存在,创建视图。 NOFORCE表示只有基表存在时,才创建视图,是默认值。 别名是为子查询中选中的列新定义的名字,替代查询表中原有的列名。 子查询是一个用于定义视图的SELECT查询语句,可以包含连接、分组及子查询。 WITH CHECK OPTION表示进行视图插入或修改时必须满足子查询的约束条件。后面的约束名是该约束条件的名字。 WITH READ ONLY 表示视图是只读的。 删除视图的语法如下: DROP VIEW 视图名; 删除视图者需要是视图的建立者或者拥有DROP ANY VIEW权限。视图的删除不影响基表,不会丢失数据。 1.创建简单视图 创建图书作者视图。 步骤1:创建图书作者视图: Sql代码 CREATE VIEW 图书作者(书名,作者) AS SELECT 图书名称,作者 FROM 图书; 输出结果: 视图已建立。 步骤2:查询视图全部内容 Sql代码 SELECT * FROM 图书作者; 输出结果: Sql代码 书名 作者 -------------------------------- -------------------- 计算机原理 刘勇 C语言程序设计 马丽 汇编语言程序设计 黄海明 步骤3:查询部分视图: Sql代码 SELECT 作者 FROM 图书作者; 输出结果: Sql代码 作者 ---------- 刘勇 马丽 黄海明 说明:本训练创建的视图名称为“图书作者”,视图只包含两列,为“书名”和“作者”,对应图书表的“图书名称”和“作者”两列。如果省略了视图名称后面的列名,则视图会采用和表一样的列名。对视图查询和对表查询一样,但通过视图最多只能看到表的两列,可见视图隐藏了表的部分内容。 创建清华大学出版社的图书视图。 步骤1:创建清华大学出版社的图书视图: Sql代码 CREATE VIEW 清华图书 AS SELECT 图书名称,作者,单价 FROM 图书 WHERE 出版社编号= '01'; 执行结果: 视图已建立。 步骤2:查询图书视图: Sql代码 SELECT * FROM 清华图书; 执行结果: Sql代码 图书名称 作者 单价 -------------------------------------------- ---------- ----------------------- 计算机原理 刘勇 25.3 步骤3:删除视图: Sql代码 DROP VIEW 清华图书; 执行结果: 视图已丢掉。 说明:该视图包含了对记录的约束条件。 2.创建复杂视图 修改作者视图,加入出版社名称。 步骤1:重建图书作者视图: Sql代码 CREATE OR REPLACE VIEW 图书作者(书名,作者,出版社) AS SELECT 图书名称,作者,出版社名称 FROM 图书,出版社 WHERE 图书.出版社编号=出版社.编号; 输出结果: 视图已建立。 步骤2:查询新视图内容: Sql代码 SELECT * FROM 图书作者; 输出结果: Sql代码 书名 作者 出版社 -------------------------------------------- ---------- ---------------------------- 计算机原理 刘勇 清华大学出版社 C语言程序设计 马丽 电子科技大学出版社 汇编语言程序设计 黄海明 电子科技大学出版社 说明:本训练中,使用了OR REPLACE选项,使新的视图替代了同名的原有视图,同时在查询中使用了相等连接,使得视图的列来自于两个不同的基表。 创建一个统计视图。 步骤1:创建emp表的一个统计视图: Sql代码 CREATE VIEW 统计表(部门名,最大工资,最小工资,平均工资) AS SELECT DNAME,MAX(SAL),MIN(SAL),AVG(SAL) FROM EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO GROUP BY DNAME; 执行结果: 视图已建立。 步骤2:查询统计表: Sql代码 SELECT * FROM 统计表; 执行结果: Sql代码 部门名 最大工资 最小工资 平均工资 -------------------------- --------------- ----------------- ------------------ ACCOUNTING 5000 1300 3050 RESEARCH 3000 800 2175 SALES 2850 950 1566.66667 说明:本训练中,使用了分组查询和连接查询作为视图的子查询,每次查询该视图都可以得到统计结果。 创建只读视图 创建只读视图要用WITH READ ONLY选项。 创建只读视图。 步骤1:创建emp表的经理视图: Sql代码 CREATE OR REPLACE VIEW manager AS SELECT * FROM emp WHERE job= 'MANAGER' WITH READ ONLY; 执行结果: 视图已建立。 步骤2:进行删除: Sql代码 DELETE FROM manager; 执行结果: ERROR 位于第 1 行: ORA-01752: 不能从没有一个键值保存表的视图中删除 4.创建基表不存在的视图 正常情况下,不能创建错误的视图,特别是当基表还不存在时。但使用FORCE选项就可以在创建基表前先创建视图。创建的视图是无效视图,当访问无效视图时,Oracle将重新编译无效的视图。 使用FORCE选项创建带有错误的视图: Sql代码 CREATE FORCE VIEW 班干部 AS SELECT * FROM 班级 WHERE 职务 IS NOT NULL; 执行结果: 警告: 创建的视图带有编译错误。 视图的操作 对视图经常进行的操作是查询操作,但也可以在一定条件下对视图进行插入、删除和修改操作。对视图的这些操作最终传递到基表。但是对视图的操作有很多限定。如果视图设置了只读,则对视图只能进行查询,不能进行修改操作。 1.视图的插入 视图插入练习。 步骤1:创建清华大学出版社的图书视图: Sql代码 CREATE OR REPLACE VIEW 清华图书 AS SELECT * FROM 图书 WHERE 出版社编号= '01'; 执行结果: 视图已建立。 步骤2:插入新图书: Sql代码 INSERT INTO 清华图书 VALUES('A0005','软件工程','01','冯娟',5,27.3); 执行结果: 已创建 1 行。 步骤3:显示视图: Sql代码 SELECT * FROM 清华图书; 执行结果: Sql代码 图书 图书名称 出 作者 数量 单价 -------- ---------------------------------------- ----------- -------- ------------------------ -------------- A0001 计算机原理 01 刘勇 5 25.3 A0005 软件工程 01 冯娟 5 27.3 步骤4:显示基表 Sql代码 SELECT * FROM 图书; 执行结果: Sql代码 图书 图书名称 出 作者 数量 单价 -------- ------------------------------------------ ------- ---------------- ----------------- --------------- A0001 计算机原理 01 刘勇 5 25.3 A0002 C语言程序设计 02 马丽 1 18.75 A0003 汇编语言程序设计 02 黄海明 15 20.18 A0005 软件工程 01 冯娟 5 27.3 说明:通过查看视图,可见新图书插入到了视图中。通过查看基表,看到该图书也出现在基表中,说明成功地进行了插入。新图书的出版社编号为“01”,仍然属于“清华大学出版社”。 但是有一个问题,就是如果在“清华图书”的视图中插入其他出版社的图书,结果会怎么样呢?结果是允许插入,但是在视图中看不见,在基表中可以看见,这显然是不合理的。 2.使用WITH CHECK OPTION选项 为了避免上述情况的发生,可以使用WITH CHECK OPTION选项。使用该选项,可以对视图的插入或更新进行限制,即该数据必须满足视图定义中的子查询中的WHERE条件,否则不允许插入或更新。比如“清华图书”视图的WHERE条件是出版社编号要等于“01”(01是清华大学出版社的编号),所以如果设置了WITH CHECK OPTION选项,那么只有出版社编号为“01”的图书才能通过清华视图进行插入。 使用WITH CHECK OPTION选项限制视图的插入。 步骤1:重建清华大学出版社的图书视图,带WITH CHECK OPTION选项: Sql代码 CREATE OR REPLACE VIEW 清华图书 AS SELECT * FROM 图书 WHERE 出版社编号= '01' WITH CHECK OPTION; 执行结果: 视图已建立。 步骤2:插入新图书: Sql代码 INSERT INTO 清华图书 VALUES('A0006','Oracle数据库','02','黄河',3,39.8); 执行结果: ERROR 位于第 1 行: ORA-01402: 视图 WITH CHECK OPTIDN 违反 where 子句 说明:可见通过设置了WITH CHECK OPTION选项,“02”出版社的图书插入受到了限制。如果修改已有图书的出版社编号情况会如何?答案是将同样受到限制。要是删除视图中已有图书,结果又将怎样呢?答案是可以,因为删除并不违反WHERE条件。 3.来自基表的限制 除了以上的限制,基表本身的限制和约束也必须要考虑。如果生成子查询的语句是一个分组查询,或查询中出现计算列,这时显然不能对表进行插入。另外,主键和NOT NULL列如果没有出现在视图的子查询中,也不能对视图进行插入。在视图中插入的数据,也必须满足基表的约束条件。 基表本身限制视图的插入。 步骤1:重建图书价格视图: Sql代码 CREATE OR REPLACE VIEW 图书价格 AS SELECT 图书名称,单价 FROM 图书; 执行结果: 视图已建立。 步骤2:插入新图书: Sql代码 INSERT INTO 图书价格 VALUES('Oracle数据库',39.8); 执行结果: ERROR 位于第 1 行: ORA-01400: 无法将 NULL 插入 ("SCOTT"."图书"."图书编号") 说明:在视图中没有出现的基表的列,在对视图插入时,自动默认为NULL。该视图只有两列可以插入,其他列将默认为空。插入出错的原因是,在视图中不能插入图书编号,而图书编号是图书表的主键,是必须插入的列,不能为空,这就产生了矛盾。 视图的查看 USER_VIEWS字典中包含了视图的定义。 USER_UPDATABLE_COLUMNS字典包含了哪些列可以更新、插入、删除。 USER_OBJECTS字典中包含了用户的对象。 可以通过DESCRIBE命令查看字典的其他列信息。在这里给出一个训练例子。 查看清华图书视图的定义: Sql代码 SELECT TEXT FROM USER_VIEWS WHERE VIEW_NAME='清华图书'; 执行结果: Sql代码 TEXT ----------------------------------------------------------------------------------------------- SELECT 图书名称,作者,单价 FROM 图书 WHERE 出版社编号='01' 查看用户拥有的视图: Sql代码 SELECT object_name FROM user_objects WHERE object_type='VIEW'; 执行结果: Sql代码 OBJECT_NAME ---------------------------------------------------------------------------------------------- 清华图书 图书作者
发表评论
-
Oracle中long类型表的转换!
2012-09-11 23:47 1500Oracle中强烈不推荐用long类型,但是为了解燃眉之急,被 ... -
JDBC批量Insert深度优化
2012-05-03 17:38 1767JDBC批量Insert深度优化 1、批量执行时 ... -
索引整理
2012-05-03 17:32 826一, oracle的索引陷 ... -
Windows 7上成功安装Oracle 10g的一点经验
2011-12-08 09:58 1142首先要下载支持Vista版本的Oracle 10G(以下链接地 ... -
Oracle分页查询
2011-11-15 14:09 948Oracle 的分页查询语句基本上可以按照本文给出的格式来 ... -
oracle分析函数row_number() over()使用
2011-06-15 21:37 947row_number() over(partition by ... -
关于MySQL 去掉重复数据问题
2011-06-15 16:17 1569遇到很棘手问题,关于MySQL去除重复数据: 1> ... -
ORA-12514:监听程序当前无法识别连接描述符中请求的服务
2011-03-05 15:39 1049Oracle9i以后,后台进程PMON自动在监听器中注册系统参 ... -
ORA-12154无法解析指定的连接标志符
2011-02-15 22:03 2322我用PL/SQL DEV 连接远程oracle 但是给 ... -
win7 卸载Oracle 10g
2011-02-14 15:47 3853之前在主机上装了win7 的Oracle 10g 64位,由于 ... -
Oracle中一个汉字占几个字节
2011-01-23 18:11 1942Oracle中一个汉字占几个字节,这个取决于Oracle所使用 ... -
几道经典のSQL笔试题目
2010-12-22 18:17 1029(1)表名:购物信息 ... -
数据库连接池实现原理
2010-10-14 20:57 1137数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接 ... -
左链接 右链接
2010-09-16 14:30 1493为了学习Hibernate,我理解一下 left ou ... -
mysql 详细分页
2010-09-11 13:01 1143public List<Menu> findBy ... -
sql2005 分页
2010-09-09 20:24 1198int pageSize=3;//一页显示几条记录 ...
相关推荐
oracle 视图创建和操作,创建简单,复杂的视图,创建基表不存在的视图,视图增删改,查看视图的结构
WITH READ ONLY :默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不...
Oracle的视图分为简单视图和复杂视图两种,简单视图是从单一的表中获取数据,其中不包含函数和数据组等,复杂视图是指在视图定义中包括了聚合函数、分析函数、用户自定义函数、多表关联、子查询等。此类视图在...
你可以通过创建表的视图来表现数据的逻辑子集或数据的组合。视图 是基于表或另一个视图的逻辑表,一个视图并不包含它自己的数据,它 象一个窗口,通过该窗口可以查看或改变表中的数据。视图基于其上的 表称为基表。...
要给一个视图建立一个索引,视图定义必须遵守某组条件和会话设置,同时要求把基表和 视图定义联系起来。如果你确定你的视图满足这些标准,你给视图建立的第一个索引必须是一个唯一的聚集索引。建立的第一个视图必须 ...
即使是同样的数据,也可能有不同的操作要求,于是就可以根据他们的不同需求,在物理的数据库上定义他们对数据库所要求的数据结构,这种根据用户观点所定义的数据结构就是视图。 基本表 用户一视图 基本表 用户二视图...
(6)程序员虽然操作的是视图,但终视图还会转成操作基表 (7)一个基表可以有0个或多个视图 什么情况下会用到视图? (1)如果你不想让用户看到所有数据(字段’);” target=”_self”>字段,记录),...
一、视图的概念视图是基于一个或者多个表上的预定义查询,这些表称为基表,从视图中查询数据的方法与从基表中查询数据的方法相同 二、创建视图语法:create [or
但是,要创建可更新视图,定义视图的select语句不能包含以下任何元素: 聚合函数,如:min,max,sum,avg,count等。 DISTINCT子句 GROUP BY子句 HAVING子句 左连接或外连接。 UNION或UNION ALL子句 SELECT...
查看和加密视图定义文本 通过视图修改基表中的数据 使用图形工具管理视图 【内容】 10.1 概述 10.2 视图的概念、特点和类型 10.3 创建视图 10.4 通过视图修改数据 10.5 使用图形化工具定义视图 10.6 本章小结
视图就是一张虚拟的表,我们称为视图表,但是这张虚拟的表里边的内容和真实的表内容是一样的,里边有字段,有数据,只不过这张表在服务器上不是以数据的形式存在的,就是视图里的数据在数据库目录下是没有所对应的...
Oracle ebs AP基表和总账关联表结构Oracle ebs AP基表和总账关联表结构
(10) 使用INSERT INTO语句更新view_ avgamount视图,然后再次查询该视图以及查询相关基表检查执行结果。 insert into view_avgamount values('800','zhangsan','200') go select * from view_avgamount go 1. ...
文章目录1 视图概述、创建视图1.1 基本概念1.2 创建视图(1)在单表中创建视图(2)在多表中创建视图(3)在视图中创建新视图2 查看视图、修改视图2.1 查看视图2.2 修改视图3 视图数据更新、删除3.1 视图数据更新3.2...
3. 隐藏数据的复杂性:视图可以将复杂的数据结构简化,隐藏底层数据的复杂性,使得用户更容易理解和使用数据。 4. 提高性能:视图可以在查询时直接使用基表的数据,而不需要再次执行SQL查询,从而提高查询性能。
oracle数据库支持物化视图–不是基于基表的虚表,而是根据表实际存在的实表,即物化视图的数据存储在非易失的存储设备上。 下面实验创建ON COMMIT 的FAST刷新模式,在mysql中用触发器实现insert , update , delete ...
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。 注意: 对于普通用户:授予connect, resource权限。 对于DBA管理用户:授予connect,resource, dba权限。 授予系统...
既然是只读,当然不能进行增删改操作视图操作的就是基表的数据,删除视图中的数据是会影响基表的,但是删除整个视图不影响基表=================同义词=
视图: mysql中的视图,视图与表有很多相似的地方,视图也是由若干个字段以及若干条记录构成,视图也可以作为select语句的数据源。 视图中保存的仅仅是一条select语句,保存的是视图...·查看视图结构(查看视图的信息
简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。 安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到...