oracle学习 笔记(2)
题记:在使用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)的更多相关文章
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Oracle学习笔记——点滴汇总
Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
- Oracle学习笔记之四,SQL语言入门
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
- Oracle学习笔记—数据字典和常用命令(转载)
转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...
- oracle学习笔记(一)用户管理
--oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...
- 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子
1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...
- Oracle 学习笔记 11 -- 视图 (VIEW)
本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...
- oracle学习笔记1(环境搭建)
学习的开始先剧透一下,本人有点笨,本来想用oracle vbox,装个red hat+oracle,但是虚拟机一直报错,0x00000000内存不能written.所以便想到其他的办法,刚好接触了go ...
随机推荐
- [译] AR SDK的种类比你想得要多!这里介绍七个棒棒哒
作者:Eddie Offermann 原文:There are dozens more Augmented Reality SDKs than you think! Here are seven gr ...
- 制作 OpenStack Linux 镜像 - 每天5分钟玩转 OpenStack(151)
这是 OpenStack 实施经验分享系列的第 1 篇. OpenStack 的 instance 是通过 Glance 镜像部署的,所以准备镜像是必须要做的工作.本节介绍 Linux 镜像的制作方法 ...
- java 多线程之卖票两种方式
1.通过extends Thread /* 需求:简单的卖票,多个窗口同时买票 (共用资源) 创建线程的第二种方式:实现Runnable接口 步骤: 1,定义类实现Runnable接口 2,覆盖/重写 ...
- Android之RecyclerView轻松实现下拉刷新和加载更多
今天研究了下RecyclerView的滑动事件,特别是下拉刷新和加载更多事件,在现在几乎所有的APP显示数据列表时都用到了.自定义RecyclerView下拉刷新和加载更多听上去很复杂,实际上并不难, ...
- 复杂的1秒--图解Google搜索技术
谷歌(Google),一个非常成功,但又十分神秘,而且带有几分理想化色彩的互联网搜索巨人,它还是一家相当了不起的广告公司,谷歌首页上的那个搜索按钮是其年赢利200亿美元的杀手级应用,也是Interne ...
- 《半吊子全栈系列:Boostrap3》
前言:后端开发做网站 几年前,作为一名纯粹后端Java开发人员,对JS还没开窍,对于页面只停留在<十天学会DIV+CSS>这种程度,但是我又想做网站怎么办? 这时候Boostrap3出现了 ...
- Ionic 2 中创建一个照片倾斜浏览组件
内容简介 今天介绍一个新的UI元素,就是当我们改变设备的方向时,我们可以看到照片的不同部分,有一种身临其境的感觉,类似于360全景视图在移动设备上的应用. 倾斜照片浏览 Ionic 2 实例开发 新增 ...
- C语言——选择排序
---恢复内容开始--- 算法思想: n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空. ②第1趟排序 在无序区R[1..n]中选出 ...
- 复制vmware中的centos后无法上网问题
复制vmware中的centos后无法上网问题 查看IP命令 ip addr 网卡信息 eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000 使用的是e ...
- Javascript学习九
计时器setInterval() 在执行时,从载入页面后每隔指定的时间执行代码. 语法: setInterval(代码,交互时间); 参数说明: 1. 代码:要调用的函数或要执行的代码串. 2. 交互 ...