oracle体系的创始和使用

oracle 系列的创制与利用

 (2012-03-15
16:14:09)

—————————————————————————————————转载——————————————————————————————————————-

    在Oracle中,可以应用系列自动生成2个平头体系,紧要用于自动为表中的数据类型的主键列提供有序的绝无仅有值,那样就足以幸免在向表中添加多少时,手工指定主键值。而且使用手工指定主键值那种措施时,由于主键值不容许再一次,因而它须要操作人士在指定主键值时自身判断新增进的值是或不是曾经存在,那很肯定是不可取的。

(1)成立系列

队列与视图一样,并不占用实际的囤积空间,只是在数量字典中保存它的概念新闻。创设序列必要选择CREATE
SEQUENCE语句,其语法如下:

CREATE SEQUENCE [schema]。sequence_name  –序列名

[ START WITH start_number ]  –早先数字

[ INCREMENT BY increment_number ]  –每便加几

[ MINVALUE minvalue | NOMINVALUE ]  –最小值

[ MAXVALUE maxvalue | NOMAXVALUE ]  –最大值

[ CACHE cache_number | NOCACHE ]  

[ CYCLE | NOCYCLE ]  –是或不是循环

[ ORDER | NOORDER ];  

小心:cache参数指定内存预分配的种类数的个数,暗中认同十几个,为了加快访问速度。

      order参数指定是或不是比照请求次序生成体系号,一般采取体系生成主键值时,影响不大。

(2)体系中的五个伪列

Currval:用于获取系列的当前值,必须再使用nextval一回之后才能采纳。

Oracle,—**nextval:用于获取连串的下多个值,第三遍利用再次来到的是开头值,向表中的主键赋值的时候使用此伪列。**

(3)种类举例 

  • 第一创造student表:

    create table student(

    sid number(4) primary key,

    sname varchar2(8) not null

    );

  • 创建student_seq序列

    create sequence student_seq

    start with 1

    increment by 1

    nocache nocycle order;

  • 创办触发器(使用student_seq序列)

 

 

     create trigger tr_student

    before insert on student

    for each row

    begin

    select student_seq into :new.sid from dual;

    end;

  • 布置数据:

    SQL> insert into student(sname) values(‘zhang’)

    已创建 1 行。

    SQL> insert into student(sname) values(‘li’);

    已创建 1 行。

    SQL> insert into student(sname) values(‘wang’)

    已创建 1 行。

  • 询问数据:
  • SQL> select * from student;
  • **       SID SNAME

            1  zhang
            2  li
            3  wang**

相关文章