版权声明:如需转载,请注明出处 https://blog.csdn.net/qq_36260974/article/details/88899669
SQL
序列
序列
● 在很多数据库中都存在一个自动增长的列,如果现在要想在oracle 中完成自动增长的功能, 则只能依靠序列完成,所有的自动增长操作,需要用户手工完成处理。
- 语法:
CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}];--[表示可选项]
● 范例:创建一个 seqpersonid 的序列,验证自动增长的操作
- 示例图:
● 序列创建完成之后,所有的自动增长应该由用户自己处理,所以在序列中提供了以下的两种操作:
- NextVal :取得序列的下一个内容
- CurrVal :取得序列的当前内容
● 范例:查询序列的下一个值
- 示例图:
● 范例:查看当前值
- 示例图:
● 在插入数据时需要自增的主键中可以这样使用
- 示例图:
在实际项目中每一张表会配一个序列,但是表和序列是没有必然的联系的,一个序列被哪一张表使用都可以,但是我们一般都是一张表用一个序列,序列的管理一般使用工具来管理。
以上操作完整源码:
--删除原来的 person 表
drop table person;
--创建一张新表 person
create table person(
person_id number(4) primary key,
pname varchar2(10),
age number(3),
birthday date
);
--序列虽然是给某个表使用,但是序列并没有绑定字某一张表,任何一张表使用这个序列都可以
create sequence seqpersonid;
--查询序列的下一个值(重点)
select seqpersonid.nextval from dual;
--查看当前值是多少
select seqpersonid.currval from dual;
--向 person 表当中插入一条数据
insert into person
(person_id, pname, age, birthday)
values
(seqpersonid.nextval, '魏宇轩', 21, sysdate);
--查询
select * from person;
如有错误,欢迎指正!