序列
概念:
序列是以有序的方式生成唯一整数值的数据对象(例如,表、视图、触发器、索引都是数据对象),通常用作表的主键或唯一键。序列不占用实际的存储空间,在数据字典中只存储序列的定义描述。
1、创建序列:(1)语法创建
语法格式create sequence sequence_name
Increment by integer
Start with integer;
Increment by:数值递增值,即两个整数之间的间隔,默认值为1.
Start with:序列的起始值
Eg: createsequence s_create
increment by 2
start with 3;
(2)直接点击序列右键新建序列
2、使用序列
使用序列是指使用序列的下面两个属性(也叫伪列)
Netxval:返回序列的下一个值
Currval:返回序列的当前值
注:在序列的初始化的时候必须使用Netxval(意指检索序列的下一个值)
Eg: SELECT no_seq.nextval FROMdual;
初始化之后,就可使用currval来获取当前值。
SQL> SELECT no_seq.currval FROM dual;
例:为主键指定序列编号。
步骤方法:创建表、创建序列、创建触发器、插入数据,最后进行测试。
(1)创建表
SQL> CREATE table Disney
(
id number primary key,
data varchar2(10)
);
(2)创建序列
SQL> CREATE sequence id_seq;
(3)创建触发器
SQL> CREATE or replace trigger bifer_disney_id_pk
beFORe insert
on Disney
FOR each row
BEGIN
SELECT id_seq.nextval into :new.id FROM dual;
END;
放进新的行(new)里的id列里面。
Trigger:触发器 bifer_disney_id_pk:对象名字
(4)插入数据
SQL> INSERT INTO Disney(data) VALUES('Tom');
SQL> INSERT INTO Disney (id,data) VALUES(6,'Jerry');
(5)测试
SQL> SELECT * FROM Disney;
ID DATA
-------------------------------
1 Tom
2 Jerry
3、修改序列
Alter sequence sequence_name
Increment by integer
Start with integer;
4、删除序列
Drop sequence sequence_name;
注:
Drop:是对象的删除(表、视图、触发器、序列等等)
Delete:是记录的删除