oracle建立远程视图查询以下数据的视图

可以用oracle语句 修改查询出的视图数据么?_百度知道
可以用oracle语句 修改查询出的视图数据么?
将查询出来的视图里面的一个a字段的不重复数据清空么。可以么.jpg" esrc="http://e?变成图中所示的数据,保留所有其他所有数据.com/zhidao/wh%3D450%2C600/sign=78d717ea33fa828bdf6d02/cbbadb7800d?
可以。select a.id,b,a(select id,a from view) a left join (select id,a from view where id not in (select max(id) from view group by a having count(*) == 1)) b这样应该就可以了。
select a.id,b,a (select id,a from view) a
这句中 a (select id,a from view) a 前后两个a是什么意思 我有点乱了 能写详细点吗
select a.id,b,afrom(select id,a from view) a left join (select id,a from view where id not in (select max(id) from view group by a having count(*) == 1)) b on a.id = b.id(select id,a from view) a 这个是当前的全表数据(select id,a from view where id not in (select max(id) from view group by a having count(*) == 1)) b 这个是具有多条的数据集合两个表做连接以全部数据为准。但是在显示的时候现实的是全部的id和多条的a字段值。根据左连接原理,那么只有一条的数据肯定会显示null
提问者评价
谢谢你的耐心解答,好详细呀
其他类似问题
update 视图名 set a=&#39,视图中没有实体,则不能查出来修改而是用Update语句直接修改,只是个窗口、框架,要先确定使用的工具。PL&#47。对视图的修改等于修改与视图对应的表。如果直接用SQL语句修改视图。因此,对视图的修改要满足相应基表的完整性约束; where id=3。至于如何修改从视图中查出来的数据;SQL Developer或者SQL Developer都可以对查出来的记录进行修改;&#39。例如清空id=3的a值清空简单说视图是表的另一种访问结构
使用的是PL/SQL Developer,只不过sql语句是写在程序里面的
程序调用这条语句 得到查询结果
要是用update直接修改 会对原表产生影响么,只希望查询出来的数据满足我的要求,对原表不产生影响。
为您推荐:
其他2条回答
reate table 表名 as select * from 视图;update 表名 set a null where a not ni (select a from (1)),count(id) from 表名 group by a having count(id)&gt
我是调用别人做给我的一张视图,查询里面的相关数据,比如查询图片中id和a两个字段的数据,但是返回值的时候,返回成题目中的数据,这可以么?
建和视图一样的新表,按你要求修改字段上的数据, 这样不会影响你同事给你的那个视图
关键是我的SQL语句是放在程序中 调用执行的
你想要的结果应该是修改视图改变查询结果吧?而不是实际物理表的数据吧?就在你视图后面 select id,case when t1.num=0 then '' else t.a end a from 表 t left join (select
a ,count(id) num from 表名 group by a) t1 on t.a=t1.a
我是调用别人做给我的一张视图,查询里面的相关数据,返回给程序,比如查询图片中id和a两个字段的数据,但是返回值的时候,返回成题目中的数据,这可以么?
可以,不过现在的规则跟你之前的有不同吧?
您可能关注的推广
oracle的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Oracle 数据库视图与基表的关系_数据库技术_Linux公社-Linux系统门户网站
你好,游客
Oracle 数据库视图与基表的关系
来源:Linux社区&
作者:贺子_DBA时代
一:首先解释什么是视图:视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表,与真实表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间,并且基表的变化会导致视图相应的改变。
二:视图的创建:&CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中: OR REPLACE:若所创建的试图已经存在,自动重建该视图; FORCE:不管基表是否存在ORACLE都会自动创建该视图; NOFORCE:只有基表都存在ORACLE才会创建该视图: alias:为视图产生的列定义的别名; subquery:一条完整的SELECT语句,可以在该语句中定义别名 可以挑选某个表中你需要的属性; WITH CHECK OPTION : 插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY : 该视图上不能进行任何DML操作。& 三:视图的修改:直接利用前边创建时的or replaece& 重建即可。
四:视图上的DML 操作:
1,一般简单视图,也就是基表只有一个的视图,是可以通过修改视图来修改基表的, Oracle是可以通过视图来修改Base table的。所谓base table就是用来构建视图的表,也就是视图的数据来源表。但是这种修改是有条件的。比如: create view v_emp as select empno,ename,job,deptno from emp where deptno=10 with check option constraint emp_ 如果有这个限制,那么通过视图v_emp 插入数据的deptno字段的值必须是10,否则就会报&ORA-01402: 视图 WITH CHECK OPTIDN 违反 where 子句&的异常。 2.针对复杂视图,也就是基表有多个表,通过内连接查询建立的视图,只能通过视图来修改key_preserved表, 什么是Key-Preserved Table呢.Oracle给出的定义是:A table is key preserved if every key of& the table can also be a key of the result of the join.It is not necessary that the key or keys of a table be selected for it to be key preserved.&It is sufficient that if the key or keys were selected, then they would also be key(s) of the result of the join.
如果某一个表的主键可以作为这个join结果(view通常是几个表的join结果)的主键,那么这个表就是key preserved table.
这个表的主键并非一定要出现在select出来的结果集中(select list里面),但是如果其出现在结果集中,那么它必须可以满足作为这个结果集的主键的要求. &通过下面的例子来解释:
create view liuwenhe as select e.ename, e.empno, e.job, d.deptno, d.dname from emp e,dept d where e.empno in (10,30) and e.deptno = d.deptno;&
emp表的主键是empno,dept表的主键是deptno, 可以看出来emp表的主键empno的值是唯一的,并且非空,所以是可以做查询结果集的主键的,但是结果集的dempno的值就不一定唯一了。所以这个视图的key_preserved表是emp, 五;视图的作用:减少复杂性和增强安全性。
1.视图可以隐藏你的查询的复杂性,例如:
SELECT d.dname,count(*) as NUM_EMPS&FROM emp e, dept d&WHERE e.deptno=d.deptno&GROUP BY
不需要输入如此复杂的查询(按照今天的标准来说,那其实并不算是复杂),我可以查询如下的一个视图:
SELECT dname,num_emps FROM my_& & & (前提是你创建了基于上面查询的视图)
你也能够将好多相当复杂的查询存储为一个视图,这样就会将查询大大的简化。通过这种方式,视图就是一种宏,它可以在幕后做许多事情,并使得这个过程让终端用户或者应用程序看起来非常简单。 2,视图也可以用于加强安全性。让我们假设一下,我只想要用户BOB看到EMP表中的ENAME 和DEPNO两个列。我可以使用如下所示: GRANT select ON emp TO
但是上面的命令会使BOB看到表的全部内容。我可以写下如下的一个视图,使BOB只看到自己能够看到的列:
CREATE VIEW bob_emp AS SELECT ename,deptno FROM GRANT select ON bob_emp TO
通过这两条命令,BOBO只能在视图中看到这个表中的两个列。
让我们更进一步的讨论一下安全性的概念。假设我们想要使得每个人都可以查询EMP表,但是只是他们自己的记录。我可以写出如下的视图:
CREATE VIEW my_emp AS SELECT * FROM emp WHERE ename=USER; GRANT select ON my_emp TO
当一个用户查询MY_EMP表示,上述视图只会返回那些ENAME列值为他们自己的用户名
3.Oracle视图非常强大的功能之一在于其可以创 建一个带有错误的视图。比如说视图里的字段在基表里不存在,该视图仍然可以创建成功,但是非法的且无法执行。当基表里加入了该字段,或者说某个字段修改成 视图里的该字段名称,那么视图马上就可以成为合法的。
更多Oracle相关信息见 专题页面
本文永久更新链接地址:
相关资讯 & & &
& (07/20/:35)
& (05/21/:51)
& (08/30/:48)
& (05/06/:42)
& (02/28/:27)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款关于 Navicat for Oracle 实体化视图,应该知道这些--百度百家
关于 Navicat for Oracle 实体化视图,应该知道这些
分享到微信朋友圈
Oracle 实体化视图是一个可以用来总结、计算、复制和分发数据的模式对象,视觉化地创建视图。点击 Navicat 主界面上的其他-&实体化视图,打开 Oracle 实体化视图对象列表。
Oracle 实体化视图是一个可以用来总结、计算、复制和分发数据的模式对象,视觉化地创建视图。点击 Navicat
主界面上的其他-&实体化视图,打开 Oracle 实体化视图对象列表。
Navicat for Oracle 最新版下载地址:
用户可以创建实体化视图快捷方式,在对象列表中的实体化视图上右击并在弹出菜单中选择“创建打开实体化视图快捷方式”,这个选项用来提供一个打开实体化视图的便捷方式而无需打开主 Navicat。
● 预览:预览实体化视图的结果。
● 解释:显示实体化视图的查询计划。
● 美化:SQL 编辑器中以美化 SQL 选项设置代码的格式。
温馨提示:可以通过选择查看-&显示结果-&在查询编辑器下面或在新选项卡,选择显示结果选项卡。
视图创建工具(限完整版本)
视图创建工具:视觉化地创建视图。即使不了解 SQL,也能创建及编辑视图。详细信息请看查询创建工具。
用户可以编辑视图定义为 SQL 语句(实施的 SELECT 语句)。
视图查看器
视图查看器:以网格显示视图数据。 数据可以用两种模式显示:网格查看和表单查看。
以上是 Navicat for Oracle 实体化视图的所有内容,想要了解更多 Navicat 教程,可参考 Navicat 官网。
分享到微信朋友圈
在手机阅读、分享本文
还可以输入250个字
推荐文章RECOMMEND
阅读:6899
阅读:1747
热门文章HOT NEWS
尽管存在一夫多妻甚至一妻多夫现象,但一夫一妻制仍然是人类的主流...
电影人程青松
百度新闻客户端
百度新闻客户端
百度新闻客户端
扫描二维码下载
订阅 "百家" 频道
观看更多百家精彩新闻网页设计教程与开发
提供各种常见网页效果
提供各种各样的设计教程
装扮QQ,让QQ变得更酷
设计参考,提高自升水平
学习服务器和操作系统
提供各种素材和工具
收藏学习资料
您现在的位置:&&>>&&>>&&>>&&>>&正文
Oracle 视图和序列
&&& 视图是一种虚表,建立在已有表的基础上,视图赖以建立的这些表称为基表向视图提供数据内容的语句为select语句,可以将视图理解为存储起来的select语句.视图向用户提供基表数据的另一种表现形式
&&& 使用视图的原因:
&&& 控制数据访问
&&& 简化查询
&&& 避免重复访问相同的数据
&&& 创建视图
&&& create [or replace] [force|noforce] view viewName[(alias[,alias]...)]
&&& as subquery
&&& [with check option[constraint constraintName]]
&&& [ with read only[constraint constraintName]];
&&& create view emp_view
&&& as select *
&&& 修改视图
&&& 使用create or replace view子句修改视图
&&& create or replace view empvu80
&&& (id_number,name,sal,department_id)
&&& as select employeee_id,first_name||''||last_name, salary,department_id
&&& from employees
&&& where department_id=80;
&&& create view子句中各列的别名应和子查询中的各列相对应
&&& 视图中使用DML规定
&&& 可以在简单视图中执行DML操作
&&& 当试图定义中包含以下元素之一时不能使用delete
&&& 组函数
&&& group by子句
&&& distinct关键字
&&& rownum伪列
&&& 当视图定义中包含以下原书之一时不能使用update:
&&& 组函数
&&& group by子句
&&& distinct关键字
&&& rownum伪列
&&& 列的定义为表达式
&&& 当视图定义中包含以下元素之一时不能使用insert:
&&& 组函数
&&& group by子句
&&& distinct关键字
&&& rownum伪列
&&& 列的定义为表达式
&&& 表中非空的列在视图定义中未包括\
&&& 屏蔽DML操作
&&& 使用with read only选项屏蔽对视图的DML操作
&&& 任何DML操作都会返回一个Oracle server错误
&&& create or replace view empvu10
&&& ( employee_number,employee_name,job_title)
&&&ect employee_id,last_name,job_id
&&& from employees
&&& where department_id=10
&&& 删除视图
&&& 删除视图只是删除视图的定义,并不会删除基表的数据
&&& drop view viewN
&&& top-N分析
&&& Top-N分析查询一个列中最大或最小的n个值,最大和最小的值的集合是Top-N分析所关心的
&&& 查询最大的几个值的Top-N分析:
&&& select[column_list], rownum
&&& from (select[column_list]
&&& from table
&&& order by Top-N_column)
&&& where rownum&=n;
&&& 例如:查询工资最高的三名员工:
&&& select rownum as rank, last_name,salary
&&& from (select last_name,salary,from employees
&&& order by salary desc)
&&& where rownum&=3;
& ---------
&&& 序列是可供多个用户用来产生唯一数值的数据库对象
&&& 自动提供唯一的数值
&&& 共享对象
&&& 主要用于提供主键值
&&& 将序列值装入内存可以提高访问效率
&&& create sequence语句
&&& create sequence
&&& [increment by n]
&&& [start with n]
&&& [{maxvalue n}|nomaxvalue]
&&& [{minvalue n}|nominvalue]
&&& [{cycle|nocycle}]
&&& [{cache n|noche}];
&&& 创建序列dept_deptid_seq为表department提供主键
&&& 不使用cycle选项
&&& create sequence dept_dept_id_seq
&&& increment by 10每次增长10
&&& start with 10从10开始
&&& maxvalue 9999最大值为9999
&&& nocache不缓存
&&& 查询序列
&&& 查询数据字典视图user_sequence获取序列定义信息
&&& select sequence_name,min_value,max_value, increment_by,last_number
&&& from user_
&&& 如果指定nocache选项,则列last_number显示序列中下一个有效的值
&&& nextval和currval伪列
&&& nextval返回序列中下一个有效的值,任何用户都可以引用
&&& currval中存放序列的当前值
&&& nextval应在currval之前指定,二者应同时有效
&&& 序列应用举例
&&& insert into departments(department_id,department_name,location_id)values(dept_deptid_seq.nextval,'suppt',2000);
&&& 使用序列
&&& 将序列值装入内存可提高访问效率
&&& 序列在下列情况下出现裂缝:
&&& 系统异常
&&& 多个表同时使用同一序列
&&& 如果不将序列的值装入内存(nocache),可使用表user_sequences查看序列当前的有效值
&&& 修改序列的增量,最大值,最小值,循环选项,或是否装入内存
&&& alter sequence dept_deptid_seq
&&& increment by 20
&&& maxvalue 9999
&&& nocache
&&& 修改序列的注意事项
&&& 必须是序列的拥有者或对序列有alter权限
&&& 只有奖励的序列值会被改变
&&& 改变序列的初始值只能通过删除序列之后重建序列的方法实现
&&& 删除序列
&&& 使用drop sequence语句删除序列
&&& drop sequence sequenceN
& ----------&索引
&&& 索引是一种独立于表的模式对象,可以存储在与表不同的磁盘或表空间
&&& 索引被删除或损坏,不会对表产生影响,起影响的只是查询的速度
&&& 索引一旦建立,Oracle管理系统会对其进行自动维护,而且由Oracle管理系统决定何时使用索引,用户不用再
&&& 查询语句中指定使用哪个索引
&&& 在删除一个表时,索引基于该表的索引会自动删除
&&& 通过指针加速oracle服务器的查询速度
&&& 通过快速定位数据的方法,减少磁盘I/O
&&& 创建索引
&&& 自动创建:在定义primary key或unique约束系统自动在相应的列上创建唯一性索引
&&& 手动创建:用户可以在其他列上创建非唯一性索引,以加速查询
&&& create index indexname on table (column[,column]...);
&&& 在表employees的列last_name上创建索引
&&& create index emp_last_name_idx
&&& on employees(last_name);
&&& 什么时候创建索引
&&& 列中数据值分布范围很广
&&& 列经常在where子句或链接条件中出现
&&& 表经常被访问而且数据流很大,访问的数据大概占数据总量的2%-4%
&&& 什么时候不要创建索引
&&& 表很小
&&& 列不经常作为连接条件或出现where子句中
&&& 查询的数据大于2%到4%
&&& 表经常更新
&&& 查询索引
&&& 可以使用数据字典视图user_indexes和user_id_columns查看索引信息
&&& select ic.index_name,ic.column_name,ic.column_position col_pos,ix.uniqueness
&&& from user_index ix,user_ind_columns ic
&&& where ic.index_name=ix.index_name
&&& and ic.table_name='employees';
&&& 删除索引
&&& drop index indexN
& ----------
&&& 同义词
&&& 使用同义词访问相同的对象
&&& 方便访问其他用户的对象缩短了对象名字的长度
&&& 创建和删除同义词
&&& create synonym d_sum
&&& from dept_sum_
&&& drop synonym d_
转载请注明:破洛洛(谢谢合作)
上一篇文章: 下一篇文章:
网友评论:求助: Oracle能否实现 A数据库 建一个视图 去查询B数据表数据?
[问题点数:80分,结帖人qqhw123]
求助: Oracle能否实现 A数据库 建一个视图 去查询B数据表数据?
[问题点数:80分,结帖人qqhw123]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2015年1月 Oracle大版内专家分月排行榜第一2014年12月 Oracle大版内专家分月排行榜第一2014年11月 Oracle大版内专家分月排行榜第一2014年10月 Oracle大版内专家分月排行榜第一2014年9月 Oracle大版内专家分月排行榜第一2014年8月 Oracle大版内专家分月排行榜第一
2015年5月 Oracle大版内专家分月排行榜第二2015年3月 Oracle大版内专家分月排行榜第二2015年2月 Oracle大版内专家分月排行榜第二
2015年1月 Oracle大版内专家分月排行榜第一2014年12月 Oracle大版内专家分月排行榜第一2014年11月 Oracle大版内专家分月排行榜第一2014年10月 Oracle大版内专家分月排行榜第一2014年9月 Oracle大版内专家分月排行榜第一2014年8月 Oracle大版内专家分月排行榜第一
2015年5月 Oracle大版内专家分月排行榜第二2015年3月 Oracle大版内专家分月排行榜第二2015年2月 Oracle大版内专家分月排行榜第二
2015年1月 Oracle大版内专家分月排行榜第一2014年12月 Oracle大版内专家分月排行榜第一2014年11月 Oracle大版内专家分月排行榜第一2014年10月 Oracle大版内专家分月排行榜第一2014年9月 Oracle大版内专家分月排行榜第一2014年8月 Oracle大版内专家分月排行榜第一
2015年5月 Oracle大版内专家分月排行榜第二2015年3月 Oracle大版内专家分月排行榜第二2015年2月 Oracle大版内专家分月排行榜第二
2015年1月 Oracle大版内专家分月排行榜第一2014年12月 Oracle大版内专家分月排行榜第一2014年11月 Oracle大版内专家分月排行榜第一2014年10月 Oracle大版内专家分月排行榜第一2014年9月 Oracle大版内专家分月排行榜第一2014年8月 Oracle大版内专家分月排行榜第一
2015年5月 Oracle大版内专家分月排行榜第二2015年3月 Oracle大版内专家分月排行榜第二2015年2月 Oracle大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 oracle多表建立视图 的文章

 

随机推荐