zoukankan      html  css  js  c++  java
  • oracle学习 笔记(2)

    题记:在使用Oracle数据库的时候,发现Oracle是没有自动增长列来实现主键的,所以在此记录学习。(PS:如果哪里有错误或者不足的地方还请大家帮忙指出来)

    二、序列(自动增长列)

      为此问题博主也是各种搜索,挖贴子,最终也没有找到为什么Oracle没有自增列这一原因,还望有大牛看到出来指点迷津,在此谢过了。

      因为在SQL Server中有会自动生成的“自动增长列”来实现主键”,很是方便,所以在换用Oracle的时候还是有点不习惯的,不过俗语说得好,不管白猫黑猫,捉到老鼠就是好猫;在Oracle中便使用序列来实现这一功能的。

    1.创建序列

     1 /*
     2     创建序列
     3 */
     4  --注意命名规范
     5 CREATE SEQUENCE sequence_name
     6 --指定要生成的第一个序列,对于升序,默认值为最小值;对于降序,默认值为最大值
     7 [START WITH integer]
     8 --用于指定序列号之接的间隔,默认值为1 , 若值为正值,则生成序列按升序排列;若为负值,则生成序列为降序排列
     9 [INCREMENT BY integer]
    10 --MAXVALUE:指定序列可以生成最大值;
    11 --NOMAXUALUE:如果指定了NOMAXUALUE,Oracle将升序序列的最大值设为10^27,将降序序列的最大值设为-1;此为默认选项
    12 [MAXVALUE integer|NOMAXUALUE]
    13 --MINVALUE:指定序列的最小值,必须小于或等于START WITH值,并且必须小于MAXVALUE;
    14 --NOMAXUALUE:如果指定NOMAXUALUE,Oracle将升序序列的最小值设为1,将降序序列的最小值设为-10^26;此为默认选项
    15 [MINVALUE integer|NOMINUALUE]
    16 --CYCLE:指定序列达到最大值或者最小值之后,将重新从头开始生成值
    17 --NOCYCLE:指定序列达到最大值或者最小值之后,将不能在继续生成值
    18 [NOCYCLE|CYCLE]
    19 --CACHE:预先缓存分配一组序列号,并将其保留在内存中,这样可以更快的访问序列号。当缓存序列号用完时,将生成另一组序列号将其保留在缓存中
    20 --NOCACHE:关闭缓存,忽略此选项默认缓存20个序列号
    21 [CACHE integer|NOCACHE];

    2.访问序列

    1 /*
    2   例    访问序列
    3 */
    4 --使用NEXTVAL创建序列后第一次调用返回初始值,之后再次引用时,将使用INCREMENT BY子句来增加的值,并返回这个新值
    5 INSERT INTO tableName(id,name,price)
    6     VALUES(sequence_name.NEXTVAL,BigRoc,1);
    7 
    8 --返回序列的当前值,即最后一次引用NEXTVAL时返回的值,dual是Oracle提供的一张表 只会返回一行一列记录
    9 SELECT sequence_name.CURRVAL FROM dual;

    3.更改序列

     1 ALTER SEQUENCE sequence_name
     2 
     3   [INCREMENT BY integer]
     4 
     5   [MAXVALUE integer|NOMAXUALUE]
     6 
     7   [MINVALUE integer|NOMINUALUE]
     8 
     9   [NOCYCLE|CYCLE]
    10 
    11   [CACHE integer|NOCACHE];

    注意:不能修改序列的START WITH参数,在修改序列时应注意升序序列的最小值应小于最大值!!!

    4.删除序列

    1 DROP SEQUENCE sequence_name;

    注意:使用序列中 在数据库迁移的时候需注意,因为迁移后表中已存在数据,如不修改起始值,便会违背主键约束,所以在创建序列时要修改序列的起始值。

     

    每天记录一点,就能多学一点。

  • 相关阅读:
    java笔记之连接数据库
    关于数据集合的使用
    ubuntu下安装MySql
    Android笔记之Broadcast广播机制
    InputStream
    Android笔记之Toast
    jqGrid 复选框实现单选
    layer弹出框包含页面
    input不显示边框
    UUID
  • 原文地址:https://www.cnblogs.com/bigroc/p/BigRoc.html
Copyright © 2011-2022 走看看