WEB开发网
开发学院数据库Oracle Oracle数据库入门之DDL与数据库对象 阅读

Oracle数据库入门之DDL与数据库对象

 2012-11-28 15:27:55 来源:WEB开发网   
核心提示:释二:实际上nomaxvalue在实现的过程中,是有最大值的,Oracle数据库入门之DDL与数据库对象(7),大约是10的27次方,同理nominvalue是10的负27次方而且在使用序列的时候,也能够缩短对象名字的长度创建:create [public] synonym synonym fro object;cre
释二:实际上nomaxvalue在实现的过程中,是有最大值的,大约是10的27次方。同理nominvalue是10的负27次方
而且在使用序列的时候,一般不应该让它循环。避免出现预期以外的数据的重复
释三:cache设置是否进行缓冲存储。它的缺省值不是nocache,而是cache 20
也就是说cache会先生成20个序列号备用,当序列号被用掉了一个之后,它就会再补充上一个
这种通过备用的方式,能够使程序运行效率会高一点。但是缓存序列号有可能会有丢失,倒不是出错,只是不连续而已
释四:order保证生成的序列号一定是按照请求的顺序。其实对于单进程或者单线程的程序(即非并发性的访问)来说没有什么差别
若在并发(也叫并行)工作模式下,多个请求同时请求同一个序列号的时候,分配给它们序列号就有可能是不保证顺序的
只是顺序不保证,但值还是唯一的,不会重复。实际上它对我们来说影响不大。比如有两个请求先后同时到达
如果用order来保证的话,那么先到达的请求所请求到的序列号就会是101,后到达的就是102
但如果nooder就可能出现先到达的请求得到的反而是102,后到达的可能是101,因为中间有一个交替的过程
缺省为noorder,即不保证序列号是按照请求顺序生成的
使用:select mysequence1.nextval from dual;--其实它会新生成一个序列号,返回一个整数值
select mysequence1.currval from dual;--取出当前的序列号。这种直接的查询,意义不大
insert into test1 values(mysequence1.nextval,'Tom');--这才是真正的使用序列
nextval伪列用于从指定的序列数值中取出下一个值。currval伪列引用的是指定序列的“当前值”
使用缓存(cache n)可提高访问效率。使用nocache和order设置会降低运行效率
当在回滚、系统异常、多个表同时使用同一序列等情况下,可能会使得序列不连续
修改:alter sequence [schema.]sequence [increment by n][{maxvalue n|nomaxvalue}]
[{minvalue n}|nominvalue][{cycle|nocycle}][{cache n|nocache}][{order|noorder}];
操作者必须是序列的所有者,或者拥有alter该序列的权限。只有未来再生成的序列数受影响
修改时会进行一些验证,比如新的maxvalue如果小于当前的序列值就会报错。序列的初始值不可更改
为了避免跟现有的序列号发生重复,所以序列的初始值不可更改
删除:使用drop sequence语句删除序列。操作者须是序列的所有者,或拥有drop该sequence的权限



同义词
概述:相当于对象的别名,使用同义词可以方便访问其它用户的对象,也能够缩短对象名字的长度
创建:create [public] synonym synonym fro object;
create synonym gt1 for emp;
使用:select * from gt1;
删除:drop synonym gt1;
说明:若不加public,那么定义的同义词则只能在当前方案(用户)的环境中可用,其它用户则无法使用该同义词
而加了public后,其它的方案(用户)便也可以使用这个同义词了
但必须是具有相应权限的用户(如DBA)才有资格将同义词定义为public类型

上一页  2 3 4 5 6 7 

Tags:Oracle 数据库 入门

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接