首先创建用户和授权不需要commit,commit只在insert,update,delete时用.
如果需要授权A访问B中视图的权限,需要先登录B通过账户B授权给A,代码如下
grant select on View to A;
这时A才能访问B中的视图,访问时需要在视图名前加上schema,如下
select * from B.view;
如果想直接通过视图名来访问可通过创建"同义词"的方式实现
希望能帮助到你
create
or
replace
view
视图名
as
...;
基本的创建命令:
比如:创建表book的一张视图
view_book
select
*
from
book
where
book_id
='001';
使用视图,就用select
view_book;
当然了,使用
图形化界面
更方便.
①.、视图(View)创建使用,视图(View)实际上是一张或者多张表上的预定义查询,这些表称为基表.从视图中查询信息与从表中查询信息的方法完全相同.只需要简单的SELECT?FROM即可.
视图具有以下优点:可以限制用户只能通过视图检索数据.这样就可以对最终用户屏蔽建表时底层的基表.可以将复杂的查询保存为视图.可以对最终用户屏蔽一定的复杂性. 限制某个视图只能访问基表中的部分列或者部分行的特定数据.这样可以实现一定的安全性.从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表.
Oracle中创建视图
Oracle的数据库对象分为五种:表,视图,序列,索引和同义词.
视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表.
视图是存储在数据字典里的一条select语句. 通过创建视图可以提取数据的逻辑上的集合或组合.
视图的优点:
①对数据库的访问,因为视图可以有选择性的选取数据库里的一部分.
视图分为简单视图和复杂视图:
简单视图只从单表里获取数据
复杂视图从多表
简单视图不包含函数和数据组
复杂视图包含
简单视图可以实现DML操作
复杂视图不可以.
视图的创建:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY]
其中:
OR REPLACE :若所创建的试图已经存在,ORACLE自动重建该视图;
FORCE :不管基表是否存在ORACLE都会自动创建该视图;
NOFORCE :只有基表都存在ORACLE才会创建该视图:
alias :为视图产生的列定义的别名;
subquery :一条完整的SELECT语句,可以在该语句中定义别名;
WITH CHECK OPTION :
插入或修改的数据行必须满足视图定义的约束;
WITH READ ONLY :
该视图上不能进行任何DML操作.
例如:
CREATE OR REPLACE VIEW dept_sum_vw
(name,minsal,maxsal,avgsal)
AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)
FROM emp e,dept d
WHERE e.deptno=d.deptno
GROUP BY d.dname;
视图的定义原则:
①视图的查询可以使用复杂的SELECT语法,包括连接/分组查询和子查询;
ORDER BY 子句;
权限.
视图的查询:
视图创建成功后,可以从视图中检索数据,这点和从表中检索数据一样.
还可以查询视图的全部信息和指定的数据行和列.
如:
检索数据:
SQLSELECT * FROM dept_sum_vw;
查询视图定义:
SELECT view_name,text from user_views;
其中text显示的内容为视图定义的SELECT语句,可通过DESC USER_VIEWS
得到相关信息.
修改视图:
通过OR REPLACE 重新创建同名视图即可.
视图上的DML 操作:
DML操作应遵循的原则:
①简单视图可以执行DML操作;
删除数据行;
a.视图中包含GROUP 函数,GROUP BY子句,DISTINCT关键字;
b.使用表达式定义的列;
c.ROWNUM伪列.
d.基表中未在视图中选择的其他列定义为非空且无默认值.
视图可用于保持数据库的完整性,但作用有限.
通过视图执行引用完整性约束可在数据库级执行约束.
WITH CHECK OPTION 子句限定:
通过视图执行的INSERTS和UPDATES操作不能创建该视图检索不到的数据行,
因为它会对插入或修改的数据行执行完整性约束和数据有效性检查.
AS SELECT * FROM emp
视图 已建立.
查询结果:
EMPNO ENAME JOB
--------------------- -------------- -------------
修改:
将产生错误:
ERROR 位于第一行:
视图的删除:
DROP VIEW VIEW_NAME语句删除视图.
删除视图的定义不影响基表中的数据.
只有视图所有者和具备DROP VIEW权限的用户可以删除视图.
视图被删除后,基于被删除视图的其他视图或应用将无效.
使用物化视图就可以了,比如:
create materialized view mv_test
refresh complete
as --子查询语句,同普通view一样
select emp.empno,emp.ename,emp.job,emp.hiredate,emp.comm,dept.loc
from emp,dept
where emp.deptno=dept.deptno
以上就是土嘎嘎小编为大家整理的oracle如何指定视图相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!