oracle 创建视图 oracle 创建索引
视图是一个逻辑结构,本身不包含任何数据,是一个可命名的select语句。
透过视图可以看到底层数据,但是视图和数据是相互独立的。
2,创建视图需要有DBA权限。
3,语法:CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view[(alias[,alias]..)]
AS subquery;
4,create or replace 表示若视图存在则替换掉;
如:
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的公有同义词
--------------------------------------------------
更多阅读
oracle如何创建数据库 oracle数据库创建实例
oracle如何创建数据库——简介我们这里所说的创建是用图形化的界面来创建数据库的。oracle如何创建数据库——工具/原料oracle软件电脑oracle如何创建数据库——方法/步骤oracle如何创建数据库 1、从Windows桌面执行“开始”→“
Lucene+HighLighter高亮显示实例 lucene高亮实例
今天搞了一个关于Lucene的例子,权当入门教程。网上有很多资料,但是要么不全、要么不好用,所以这里把全部代码以及依赖的包贴上来了。功能包括:创建索引、检索索引、高亮显示查询结果。分词使用的庖丁解牛。使用前先下载相关的LuceneCore
lucene3.0创建索引及多目录搜索详解 lucene 6.0 创建索引
最近项目中用到了Lucene3.0,如下:创建索引:Java codepublic void index() throws CorruptIndexException,LockObtainFailedException, IOException {// 索引目录 File indexDir = new File("D:/workspace/code/java/TestLucene3/index
升级到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(