欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle第十六章:序列、索引、同义词

程序员文章站 2022-06-02 13:08:48
...

第十六章:序列、索引、同义词

-------------------------------------------------
--序列、索引
    
------------------------------------------------
-----------------------------序列SEQUENCE---------------------
    序列是按照一定规则能自动增加/减少数字的一种数据库对象
    作用:一般用于主键自增
--创建简单的序列 :默认从1开始,每次自增1
create sequence seq_emp_id;
create sequence seq_person_id;
create sequence seq_person_pid;

--访问简单序列  NEXTVAL和CURRVAL伪列
-- nextval返回序列的下一个值
-- currval返回当前会话序列值 :一定是在当前会话中执行了nextval之后才能执行currval
select seq_emp_id.nextval from dual;
select seq_emp_id.currval from dual;
--创建一张表
   create table person(
           pid number(4),
           pname varchar(10),
            sex   char(2) default '男',
            birthday  date,
            age   number(3),
            weight   number(6,2),
            address   varchar2(30)

    )
drop table person;
--给person表添加数据
insert into person(pid,pname,sex,age) values(1,'zhangsan','女',10);
insert into person(pid,pname,sex,age) values(2,'lisi','女',10)
insert into person(pid,pname,sex,age) values(seq_person_id.nextval,'lisi','女',10)
insert into person(pid,pname,sex,age) values(seq_person_id.nextval,'zhangsan','女',10);
insert into person(pid,pname,sex,age) values(seq_person_pid.nextval,'zhangsan1','女',10);

--创建复杂的序列
CREATE SEQUENCE seq_emp_empno
START WITH 10        --序列从10开始 :开始位置
INCREMENT BY 1       --序列每次增加1 :自增量
MAXVALUE 99999999999 --序列最大值999999999
MINVALUE 10         --序列最小值10
CYCLE             --序列循环,每次增加1,一直到99999999999后回到10 从新开始
CACHE 10;        --缓存中序列值个数为10

CREATE SEQUENCE seq_emp_empno
START WITH 7935        
INCREMENT BY 1       
MAXVALUE 99999999999 
MINVALUE 7935         
CYCLE            
CACHE 10;        
insert into emp(empno,ename) values(seq_emp_empno.nextval,'wangwu1')
--访问复杂的序列
select seq_emp_empno.nextval from dual;

使用序列新增一个部门,同时将10号部门的员工调到该部门去
--①创建序列
create sequence seq_dept_deptno 
start with 60
increment by 10
--②给部门表调加数据
insert into dept(deptno,dname,loc) values(seq_dept_deptno.nextval,'实施部','neusoft')
--③将10号部门的员工调到该部门去
update emp set deptno=seq_dept_deptno.currval where deptno=10;


--修改序列
       注意:修改序列的语法没有START WITH子句。简单来说就是不能修改开始位置
--修改序列seq_emp_empno的自增量为2
alter sequence seq_emp_empno
increment by 2
相关标签: Oracle oracle