oracle 创建视图 oracle 创建索引

1,视图概念:

视图是一个逻辑结构,本身不包含任何数据,是一个可命名的select语句。

透过视图可以看到底层数据,但是视图和数据是相互独立的。

2,创建视图需要有DBA权限。

3,语法:CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view[(alias[,alias]..)]

AS subquery;

4,create or replace 表示若视图存在则替换掉;

如:

oracle 创建视图 oracle 创建索引
SQL> create view testview3

2 as

3 select * from test3;

视图已创建。

SQL> create view testview3

2 as

3 select * from test3;

create view testview3

*

第 1 行出现错误:

ORA-00955: 名称已由现有对象使用

修改视图:SQL> create or replace view testview3

2 as

3 select * from test3;

视图已创建。

5,force 表示若表不存在则强制创建视图;如:SQL> create view tt

2 as

3 select * from tt;

create view tt

*

第 1 行出现错误:

ORA-01731: 出现循环的视图定义

SQL> create force view tt

2 as

3 select * from tt;

警告: 创建的视图带有编译错误。

6,查看视图结构:

SQL> desc testview3;

名称 是否为空? 类型

----------------------------------------- -------- ----------------------------

ID NOT NULL NUMBER(38)

LNAME VARCHAR2(20)

FNAME VARCHAR2(20)

7,在使用聚合函数创建视图时,需制定别名;

SQL> create view testview4

2 as

3 select id,sum(id) from test3

4 group by id;

select id,sum(id) from test3

*

第 3 行出现错误:

ORA-00998: 必须使用列别名命名此表达式

SQL> create view testview4

2 as

3 select id,sum(id) test3_id from test3

4 group by id;

视图已创建。

===========================

***************************

8,更新视图:

SQL> select * from testview5;

TEST5_ID TEST5_NAME TEST5_FNAME

---------- -------------------- --------------------

3 kong sales

2 hh

SQL> update testview5 set test5_name='kong_gai'

2 where test5_id=3;

已更新 1 行。

SQL> select * from testview5;

TEST5_ID TEST5_NAME TEST5_FNAME

---------- -------------------- --------------------

3 kong_gai sales

2 hh

=========================================================

CREATE TABLE count1

(num1 NUMBER(4,2),

num2 NUMBER(5,2),

result NUMBER(6,2));

select * from count1

insert into count1 values(1,2,3)

insert into count1 values(3,4,5)

--------------------------

create or replace view testview3

as

select * from count1

-------------------

select * from testview3

update testview3 set num1 = 9 where num2=2 ----通过更新视图,更新了视图检索的数据,同时更新了基本表中的数据:

1. select * from testview3

2. select * from count1

---------------------------------

对另一个数据对象而言同义词是一个别名。public同义词是针对所有用户的,相对而言private同义词则只针对对象拥有者或被授予权限的账户。

在本地数据库中同义词可以表示表、视图、序列、程序、函数或包等数据对象,也可以通过链接表示另一个数据库的对象。

------------------------------

1.创建同义词语句:

createpublicsynonymtable_nameforuser.table_name;

其中第一个table_name和第二个table_name可以不一样。

此外如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database Link(数据库连接)来扩展访问,然后在使用如下语句创建数据库同义词:create synonym table_name for table_name@DB_Link;

当然,你可能需要在user用户中给当前用户(user2)授权: grant select/delete/update on user2

2.删除同义词:

droppublicsynonymtable_name;

3.查看所有同义词:

select*fromdba_synonyms

同义词拥有如下好处:

节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;

扩展数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;

同义词可以创建在不同的数据库服务器上,通过网络实现连接。

-------------------------------------------------

问题描述:

有两个oralce实例 SID分别为 A B

A中a用户下含有表objects

B中有b用户

使在B中用b用户登录后执行

select * from objects

能显示出A中a.objects的全部内容

问题解答:

用b用户登录到B中,执行:

create public synonym objects for a.objects@A

此时执行select * from objects 就能显示出a.objects的全部内容

需要注意的一点:

B中不能含有table b.objects否则语句可以执行,但是执行select操作时显示的仍然为b.objects的内容,需要先把.objects删除掉,重新建立synonym即可。

删除同义词

使用DROP SYNONYM语句删除不再需要的同义词 要想删除私有同义词 就省略 PUBLIC 关键字;

要想删除公共同义词 就要包括PUBLIC 关键字

DROP SYNONYM emp; 删除名为emp 的私有同义词

DROP PUBLIC SYNONYM public_emp; 删除名为public_emp的公有同义词

--------------------------------------------------

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/143813.html

更多阅读

oracle如何创建数据库 oracle数据库创建实例

oracle如何创建数据库——简介我们这里所说的创建是用图形化的界面来创建数据库的。oracle如何创建数据库——工具/原料oracle软件电脑oracle如何创建数据库——方法/步骤oracle如何创建数据库 1、从Windows桌面执行“开始”→“

Lucene+HighLighter高亮显示实例 lucene高亮实例

今天搞了一个关于Lucene的例子,权当入门教程。网上有很多资料,但是要么不全、要么不好用,所以这里把全部代码以及依赖的包贴上来了。功能包括:创建索引、检索索引、高亮显示查询结果。分词使用的庖丁解牛。使用前先下载相关的LuceneCore

升级到win8.1导致oracle服务丢失的处理 微信升级后通讯录丢失

针对升级到win8.1导致oracle服务丢失的处理1、首先保证oracle相关程序能够运行,如netmanager,如果能够运行,说明oracle安装仍然有效,只是因为服务被“净化”,导致oracle无法启动,plsql无法连接;现象为,“我的电脑-管理-服务”中所有oracle前

Oracle Tiger触发器实例 触发器实例

Oracle Tiger触发器实例 2008-05-04 14:52 2685人阅读 评论(0) 收藏 举报Oracle Tiger触发器实例--实例1--------------------------创建触发器,当用户对test表执行DML语句时,将相关信息记录到日志表--创建测试表CREATE TABLE test(

声明:《oracle 创建视图 oracle 创建索引》为网友外灘上的背影分享!如侵犯到您的合法权益请联系我们删除