从零开始学Oracle—内建对象(五)
2009-04-09 13:11:33 来源:WEB开发网1. 序列
查询当前用户下的序列:select * from user_sequences
定义:用来生成唯一、连续的整数的数据库对象,序列通常用来自动生成主键或唯一键的值、可升、可降序排列.
语法: Create sequence 序列名称 //从1开始 每次自动增加1 没有最大值
[star with 值] 指定要生成的第一个序列号,对于升序默认值为最小值、反之...
[increment by 值] 间隔数
[maxvalue 值|nomaxvalue] 序列最大值,如果指定为nomaxvalue,则升序最大值为10的27次方,降序-1.
[minvalue 值|nominvalue] 序列最小值,-----------------------升序为1,降序为10的负26次方
[cycle|nocycle] cycle指序列到达最大或最小时,将从头开始生成值 nocycle值不在生成
[cache 值|nocache] 预先分配一组序列号,将其保存在内存中. 默认缓存20个序列
访问序列方法: currval 和nextval --当前序列 select 序列名.currval from dual
更改序列:Alter sequence 序列名
删除序列:drop sequence 序列名
注意-------------序列使用时需要先用nextval输出完以后再来使用
使用:
1.和表关联作为表的字段的值
a) create table student(
xh number(4) primary key, --学号
xm varchar2(20) not null --姓名
);
要求:学号字段 从1000开始每次增加4 最大值9999
--建立序列
create sequence xh_seq
start with 1000 --从1000开始
increment by 4 --每次增加4
maxvalue 9999 --最大值 9999
;
--使用SQL语句关联
insert into student values
(xh_seq.nextval,'Mike');
insert into student values
(xh_seq.nextval,'John');
insert into student values
(xh_seq.nextval,'Rose');
--特点:能产生唯一的值,但是不能保证值在表中的连续性
b) create table teacher(
teacherxh varchar2(10) primary key,
teachername varchar2(20)
);
要求:教师的编号的格式是TH00001
TH00002
....
--建立序列
create sequence teacher_seq
maxvalue 99999;
--
insert into teacher values ('TH'||
ltrim(to_char(teacher_seq.nextval,'00000')),
'张三');
insert into teacher values ('TH'||
ltrim(to_char(teacher_seq.nextval,'00000')),
'李');
insert into teacher values ('TH'||
ltrim(to_char(teacher_seq.nextval,'00000')),
'王');
- ››oracle 恢复误删除的表和误更新的表
- ››Oracle分页查询排序数据重复问题
- ››Oracle创建dblink报错:ORA-01017、ORA-02063解决
- ››Oracle 提高SQL执行效率的方法
- ››Oracle 动态查询,EXECUTE IMMEDIATE select into...
- ››Oracle 11g必须开启的服务及服务详细介绍
- ››oracle性能34条优化技巧
- ››oracle数据库生成随机数的函数
- ››Oracle 数据库表空间容量调整脚本
- ››oracle单库彻底删除干净的方法
- ››Oracle创建表空间、创建用户以及授权、查看权限
- ››oracle 中 UPDATE nowait 的使用方法
更多精彩
赞助商链接