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

二、序列(自动增长列)

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

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

1.创建序列

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

2.访问序列

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

3.更改序列

 ALTER SEQUENCE sequence_name

   [INCREMENT BY integer]

   [MAXVALUE integer|NOMAXUALUE]

   [MINVALUE integer|NOMINUALUE]

   [NOCYCLE|CYCLE]

   [CACHE integer|NOCACHE];

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

4.删除序列

 DROP SEQUENCE sequence_name;

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

 

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

oracle学习 笔记(2)的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  3. Oracle学习笔记——点滴汇总

    Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster

  4. Oracle学习笔记之四sp1,Oracle 11g的常用函数

    从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i)    分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...

  5. Oracle学习笔记之四,SQL语言入门

    1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...

  6. Oracle学习笔记—数据字典和常用命令(转载)

    转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...

  7. oracle学习笔记(一)用户管理

    --oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...

  8. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

  9. Oracle 学习笔记 11 -- 视图 (VIEW)

    本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...

  10. oracle学习笔记1(环境搭建)

    学习的开始先剧透一下,本人有点笨,本来想用oracle vbox,装个red hat+oracle,但是虚拟机一直报错,0x00000000内存不能written.所以便想到其他的办法,刚好接触了go ...

随机推荐

  1. POJ 1308 Is It A Tree?--题解报告

    Is It A Tree? Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 31092   Accepted: 10549 D ...

  2. Jenkins的插件

    Jenkins不仅自己为大家提供了很多功能,而且还支持插件.用户可以根据自己的需要安装插件,或者是自己开发插件. 这里说一下Jenkins的插件的安装方法: 首先,打开Jenkins首页,选择Jenk ...

  3. Java静态代理和动态代理总结

    静态代理 第一种实现(基于接口): 1>接口 public interface Hello { void say(String msg);} 2>目标类,至少实现一个接口 public c ...

  4. Transport (VMDB) error -44: Message

     关于点击电源按钮的时候出现了这情况Transport (VMDB) error -44: Message.   虚拟机有个服务没开.开始菜单--运行--services.msc 回车   找到VMw ...

  5. java学习之路

    先来说一说我和it之间的不解之缘.准确来说,我接触it是从大二是我买的第一个手机开始的(国产的,展讯平台,能够运行mrp虚拟机),那时候还没有智能手机,或者说还不够普及,总之就是买不起.一次偶然的机会 ...

  6. 使用EntityFramework中DbSet.Set(Type entityType)方法碰到的问题

    使用的是EntityFramework, Version=6.0.0.0,项目原本直接使用将EntityFramework的Entity拿到UI使用,后面想使用dto对象将数据库的Entity与前台分 ...

  7. Redis从入门到精通

    什么是Redis? Redis是非关系型数据库,是一个高性能的key-value数据库,它是开源的,更是免费的. Redis能做什么? 存储数据 Redis的优点有哪些? 1.它支持存储丰富的数据类型 ...

  8. 关于pthread_create未定义的引用的奇葩解决

    1本来在代码里包含了pthread.h  第一次编译:gcc -o create create.c  提示错误 未定义的引用 2后来知道linux标准库没有pthread.h 要链接之-lpthrea ...

  9. C语言在open() FIFO文件的时候卡住了

    需要注意的是,open打开FIFO文件的时候,open函数里的flag参数 O——NONBLOCK: 置位:  如果“只写”方式打开文件,写进程会阻塞直到有一个读进程来读这个FIFO管道.就是说:没有 ...

  10. PetaPoco 快速上手

    今天来给大家分享一个好用的轻型的.net框架的ORM——PetaPoco 本着快速上手的原则,我们通过和EF对比,让大家能快速使用PetaPoco PetaPoco大家可能没有听说过,但大家一定听说过 ...