WEB开发网
开发学院数据库Oracle 从零开始学Oracle—内建对象(五) 阅读

从零开始学Oracle—内建对象(五)

 2009-04-09 13:11:33 来源:WEB开发网   
核心提示:1. 序列查询当前用户下的序列:select * from user_sequences定义:用来生成唯一、连续的整数的数据库对象,序列通常用来自动生成主键或唯一键的值、可升、可降序排列.语法: Create sequence 序列名称 //从1开始 每次自动增加1 没有最大值 [star with 值] 指定要生成的

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')),
       '王');

1 2 3  下一页

Tags:开始 Oracle 对象

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