oracle(32)_SQL_序列(sequence)

版权声明:如需转载,请注明出处 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;

如有错误,欢迎指正!

猜你喜欢

转载自blog.csdn.net/qq_36260974/article/details/88899669