源码-Oracle数据库管理-第八章-序列和同义词-Part 1(序列)

序列:是Oracle中的一个方案对象,创建后会保存到数据字典,可被多个用户用于产生唯一的序列号。


--第8章 序列和同义词
--代码8.1 创建序列示例表
--创建表seq01
drop table seq_01;
CREATE TABLE seq_01(ID NUMBER PRIMARY KEY,   --主键id
                    NAME VARCHAR2(100)       --字段名称
                    );

--创建表sequ02
CREATE TABLE seq_02(ID NUMBER PRIMARY KEY,  --主键id
                    NAME VARCHAR2(100)      --字段名称
                    );    
                    
drop table seq_02;

--代码8.2 创建序列
drop sequence seq_generator;
CREATE SEQUENCE seq_generator
    INCREMENT BY 1                --增长幅度为1
    START WITH 1                  --起始值为1
    MAXVALUE 9999999              --最大值
    NOCYCLE NOCACHE;              --不循环和缓冲
                   
--显示使用序列
INSERT INTO seq_01 VALUES(seq_generator.NEXTVAL,'第1次使用序列');  --使用序列插入键值
INSERT INTO seq_02 VALUES(seq_generator.NEXTVAL,'第2次使用序列');  --使用序列插入键值

--查看数据
select * from seq_01;
select * from seq_02;

--清空数据
truncate table seq_01;
truncate table seq_02;


--代码 8.3 创建一个orders_seq的序列,从1000开始,每次的步进值为1
drop sequence orders_seq;
CREATE SEQUENCE orders_seq
 START WITH     1000
 INCREMENT BY   1
 NOCACHE
 NOCYCLE;
 
 
--代码8.4 创建代码键示例表 
drop table orders;
CREATE TABLE orders(
   order_id INT PRIMARY KEY,     --订单id,
   order_no VARCHAR2(20) NULL,   --订单编号,
   product_id INT NULL,          --产品编号
   qty NUMBER NULL,              --订单数量
   order_date DATE NULL  );         --产品日期

 
--如果不显式的使用Nextval,而直接使用currval会导致抛出异常 
 SELECT orders_seq.CURRVAL FROM dual; 

 SELECT orders_seq.NEXTVAL,orders_seq.CURRVAL FROM dual; 
 
 --向orders表中插入一个新的订单
begin
  for i in 1 .. 6 loop
 INSERT INTO orders
   (order_id, order_no, product_id, qty, order_date)
 VALUES
   (orders_seq.NEXTVAL, 'ORD' || orders_seq.CURRVAL, 0, 100, TRUNC(SYSDATE));
   end loop;
end;            
--查看数据
select * from orders;    

--删除序列
drop sequence orders_seq;        
   
--插入订单明细信息
INSERT INTO order_detail
  (order_id, line_item_id, product_id)
VALUES
  (orders_seq.currval, 3, 2381);
            
--修改序列
ALTER SEQUENCE seq_generator MAXVALUE 99999 CYCLE;



--修改序列的大小小于CURRVAL的大小
ALTER  SEQUENCE seq_generator
                  INCREMENT BY 2
                  MAXVALUE 50
                  NOCACHE
                  NOCYCLE;
                  
--删除一个序列                  
DROP SEQUENCE seq_generator;                  
                  
--查询序列信息                  
SELECT sequence_name, min_value, max_value, increment_by, last_number
  FROM user_sequences;    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值