Oracle中创建、修改、删除序列

合集下载

oracleSEQUENCE创建,修改,删除

oracleSEQUENCE创建,修改,删除

oracleSEQUENCE创建,修改,删除oracle创建序列化:CREATE SEQUENCE seq_itv_collectionINCREMENT BY 1 -- 每次加⼏个START WITH 1399 -- 从1开始计数NOMAXVALUE -- 不设置最⼤值NOCYCLE -- ⼀直累加,不循环CACHE 10;oracle修改序列化:Alter Sequence.如果想要改变 start值,必须 drop sequence 再 re-create .Alter sequence 的例⼦ALTER SEQUENCE emp_sequenceINCREMENT BY 10MAXVALUE 10000CYCLE -- 到10000后从头开始NOCACHE ;Oracle删除序列化:DROP SEQUENCE seq_itv_collection;需要注意的是:想改变序列化的minvalue必须删除序列化后再重新建⽴序列化。

不可以修改序列化的minvalue。

在oracle中sequence就是序号,每次取的时候它会⾃动增加。

sequence与表没有关系。

1、Create Sequence⾸先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。

创建语句如下:CREATE SEQUENCE seqTestINCREMENT BY 1 -- 每次加⼏个START WITH 1 -- 从1开始计数NOMAXvalue -- 不设置最⼤值NOCYCLE -- ⼀直累加,不循环CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE2、得到Sequence值定义好sequence后,你就可以⽤currVal,nextVal取得值。

CurrVal:返回 sequence的当前值NextVal:增加sequence的值,然后返回增加后sequence值得到值语句如下:SELECT Sequence名称.CurrVal FROM DUAL;如得到上边创建Sequence值的语句为:select seqtest.currval from dual在Sql语句中可以使⽤sequence的地⽅:- 不包含⼦查询、snapshot、VIEW的 SELECT 语句- INSERT语句的⼦查询中- INSERT语句的values中- UPDATE 的 SET中如在插⼊语句中insert into 表名(id,name)values(seqtest.Nextval,'sequence 插⼊测试');注:- 第⼀次NEXTVAL返回的是初始值;随后的NEXTVAL会⾃动增加你定义的INCREMENT BY值,然后返回增加后的值。

Oracle创建序列的方法及技巧

Oracle创建序列的方法及技巧

Oracle创建序列的方法及技巧日期:2008-06-23] 来源:互联网整理前面说过,关系数据库的一个最重要的方面是,每个表必须有一个主键。

许多情况下,在数据库中创建一个作为标识符的新键列是最容易的。

例如,Agent s表有一个作为主键的AgentID列。

但是,总是存在一个问题:从何处取得保证唯一的新编号?在一个较大的组织机构中,可能有一个人力资源部,可以建立某种处理,以便新雇员总能分配一个唯一的编号,并且在雇用某人时该数据被录入到表中。

但必须有人密切关注所分配的所有编号,并且还需要检验它们唯一性的一个表单。

相对于依赖基于人工的处理,让数据库生成用作键值的编号更有意义。

orac le为此目的使用序列。

序列(sequence)是Oracle在需要时用来产生新值的一个编号集合。

序列的两个关键点是:必须预先建立;需要代码请求生成新值。

序列的编号不是在录入新行时自动生成的。

你必须编写代码来生成值,并把它们存储在合适的列中。

注意,可以对要自动生成编号的表的Insert事件编写一个数据库触发器。

但是,Oracle中最常见的方法是在需要时生成关键值,通常是在表单上生成。

一般,在定义原始表时定义一个序列。

但是,因为序列与表之间不存在直接的关系,所以可以在创建编号前建立序列。

序列只需创建一次,在整个SQL*Plu s中都可以使用。

(1) 因为表中已经存在数据,找出其最大值:SELECT Max(AgentID) FROM Agents;(2) 最大值应该为15521,你可能想从一个比它大的值开始。

用15522就可以了,但为保险起见,从20000开始:CREATE SEQUENCE seq_AgentsINCREMENT BY 1START WITH 20000;(3) 也是用SQL检索新值,它自动用序列定义中指定的值给计数器增量。

试一下,以保证理解相应的命令:SELECT seq_Agents.NEXTVAL FROM dual;此命令使用了人为的dual表,因为PL/SQL总是要求使用FROM子句。

oracle增删改查语句

oracle增删改查语句

or‎a c‎l e‎增删‎改查‎语句‎‎篇一‎:‎o r‎a c‎l e‎基本‎语法‎(增‎删改‎查)‎安‎装P‎L/‎S Q‎L‎D e‎v e‎l o‎p e‎r‎前提‎:‎必须‎安装‎O r‎a c‎l e‎的客‎户端‎卸‎载:‎-‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎-‎C o‎m m‎a n‎d‎W i‎n d‎o w‎-‎-‎S Q‎L P‎L U‎S ‎S Q‎L‎W i‎n d‎o w‎-‎-‎用来‎开发‎S Q‎L程‎序‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎-‎数据‎库‎增删‎改‎--‎3‎0%‎查‎-‎-‎70‎%‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎创‎建表‎:‎c r‎e a‎t e‎t‎a b‎l e‎表‎名(‎列‎1‎类型‎,‎列2‎类‎型‎);‎字‎符类‎型‎c h‎a r‎-‎-‎定长‎字符‎串‎n a‎m e‎c‎h a‎r‎(1‎0)‎-‎-‎保存‎一个‎值到‎n a‎m e‎‎a b‎c‎--‎实际‎存储‎后的‎结果‎是-‎-‎a b‎c‎v‎a r‎c h‎a r‎2‎--‎变‎长字‎符串‎n‎a m‎e‎v a‎r c‎h a‎r2‎(‎10‎)‎--‎保‎存一‎个值‎到n‎a m‎e‎a‎b c‎-‎-实‎际存‎储后‎的结‎果是‎--‎a‎b c‎‎c l‎o b‎-‎-‎保存‎超大‎文本‎4‎G‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎-‎数字‎类型‎所‎有的‎数字‎(整‎数,‎浮点‎数)‎都是‎n u‎m b‎e r‎定‎义一‎个工‎资的‎保存‎列‎s a‎l ‎n u‎m b‎e r‎(5‎,2‎)‎-9‎99‎.9‎9‎~‎99‎9.‎99‎年‎龄‎a g‎e‎n u‎m b‎e r‎(‎2)‎-‎99‎~‎9‎9‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎-‎日期‎类型‎d‎a t‎e‎--‎保‎存年‎月日‎,时‎分秒‎-‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎-‎二进‎制类‎型‎B L‎O B‎-‎-‎最大‎不能‎超过‎4G‎;‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎--‎表‎结构‎的基‎本操‎作:‎0‎、查‎看表‎结构‎d‎e s‎c表‎名‎1‎、添‎加一‎个字‎段‎a l‎t e‎r‎t a‎b l‎e‎表名‎a‎d d‎(列‎类型‎);‎‎2、‎修改‎字段‎类型‎a‎l t‎e r‎t‎a b‎l e‎表‎名‎m o‎d i‎f y‎(列‎类型‎);‎‎3、‎删除‎一个‎字段‎a‎l t‎e r‎t‎a b‎l e‎表‎名‎d r‎o p‎c‎o l‎u m‎n‎列名‎;‎4‎、修‎改表‎的名‎字‎r e‎n a‎m e‎s‎t u‎d e‎n t‎t‎o‎s t‎u‎5‎、删‎除表‎d‎r o‎p‎t a‎b l‎e‎表名‎*‎*‎如果‎需要‎修改‎列的‎名字‎新‎增一‎个字‎段,‎然后‎迁移‎数据‎,最‎后删‎除原‎字段‎或‎者使‎用图‎形化‎工具‎如‎果有‎值,‎这种‎删除‎,是‎没有‎办法‎恢复‎的。

oracle序列创建语句

oracle序列创建语句

oracle序列创建语句Oracle是一种关系型数据库管理系统,提供了多种创建序列的语句。

下面列举了10个常用的Oracle序列创建语句,以及对每个语句的详细解释。

1. CREATE SEQUENCE语句:CREATE SEQUENCE语句用于创建一个新的序列。

序列是一种自增的数字,可用于生成唯一的标识符或主键值。

以下是CREATE SEQUENCE语句的示例:```sqlCREATE SEQUENCE seq_id START WITH 1 INCREMENT BY 1; ```该语句创建了一个名为seq_id的序列,起始值为1,每次递增1。

2. CREATE SEQUENCE...MINVALUE语句:CREATE SEQUENCE...MINVALUE语句用于指定序列的最小值。

以下是CREATE SEQUENCE...MINVALUE语句的示例:```sqlCREATE SEQUENCE seq_id START WITH 1 INCREMENT BY 1 MINVALUE 1;```该语句创建了一个名为seq_id的序列,起始值为1,每次递增1,最小值为1。

3. CREATE SEQUENCE...MAXVALUE语句:CREATE SEQUENCE...MAXVALUE语句用于指定序列的最大值。

以下是CREATE SEQUENCE...MAXVALUE语句的示例:```sqlCREATE SEQUENCE seq_id START WITH 1 INCREMENT BY 1 MAXVALUE 100;```该语句创建了一个名为seq_id的序列,起始值为1,每次递增1,最大值为100。

4. CREATE SEQUENCE...CYCLE语句:CREATE SEQUENCE...CYCLE语句用于指定序列的循环方式。

当序列达到最大值后,会重新从最小值开始递增。

以下是CREATE SEQUENCE...CYCLE语句的示例:```sqlCREATE SEQUENCE seq_id START WITH 1 INCREMENT BY 1 MAXVALUE 10 CYCLE;```该语句创建了一个名为seq_id的序列,起始值为1,每次递增1,最大值为10,循环方式为循环。

oracle实验 表的插入、修改和删除的原理

oracle实验 表的插入、修改和删除的原理

Oracle实验表的插入、修改和删除的原理Oracle实验中,表的插入、修改和删除的原理如下:
1.插入数据:
●当向表中插入数据时,Oracle会根据表的结构(列的数据类型和
约束等)对数据进行验证,确保数据符合表的定义。

●如果要插入的数据与表中的主键或唯一约束冲突,Oracle会抛出
错误。

●插入数据时,可以使用INSERT语句指定要插入的列和对应的数
据值。

如果未指定列名,则必须为表中的每一列提供一个值。

2.修改数据:
●当修改表中的数据时,Oracle会找到要修改的行,并更新相应的
列的值。

●如果修改的数据违反了表中的某些约束(如唯一约束、非空约束
等),Oracle会抛出错误。

●修改数据时,可以使用UPDATE语句指定要修改的列和新值,以
及用于定位要修改的行的条件(通常为WHERE子句)。

3.删除数据:
●当从表中删除数据时,Oracle会找到要删除的行,并将其从表中
删除。

●如果删除的数据违反了表中的某些约束(如外键约束等),
Oracle会抛出错误。

●删除数据时,可以使用DELETE语句指定用于定位要删除的行的条
件(通常为WHERE子句)。

如果要删除表中的所有行,可以使用
TRUNCATE TABLE语句。

这些原理是基于关系数据库管理系统的基本操作,Oracle作为关系数据库管理系统之一,也遵循这些原理。

在实际实验中,需要注意操作的正确性和数据的一致性,以避免数据损坏或错误。

C#--Oracle数据库基本操作(增、删、改、查)

C#--Oracle数据库基本操作(增、删、改、查)

C#--Oracle数据库基本操作(增、删、改、查)写在前⾯:常⽤数据库:类似于上篇有关SQLserver的C#封装,⼩编对Oracle数据库进⾏了相应的封装,⽅便后期开发使⽤,主要包括Oracle数据库的连接、增、删、改、查,如有什么问题还请各位⼤佬指教。

后续也将对其他⼏个常⽤的数据库进⾏相应的整理。

话不多说,直接开始码代码。

引⽤:由于微软在.框架4.0中已经决定撤销使⽤System.Data.OracleClient,造成在VS中⽆法连接Oracle数据库,但它还依旧存在于.架构中,我们可以通过⾃⼰引⽤。

具体⽅法如下:(1)在需要引⽤的程序集引⽤⽂件夹上右击,选择添加引⽤(2)选择浏览选项(3)找到⽬录 C:\Windows\Microsoft.\Framework\v2.0.50727(4)找到 System.Data.OracleClient.dll ⽂件(5)点击确定。

OK,引⽤完成using System.Data; //DataSet引⽤集using System.Data.OracleClient; //oracle引⽤先声明⼀个SqlConnectionprivate OracleConnection oracle_con;//声明⼀个OracleConnection⽅便使⽤Oracle打开:/// <summary>/// Oracle open/// </summary>/// <param name="link">link statement</param>/// <returns>Success:success; Fail:reason</returns>public string Oracle_Open(string link){ try { oracle_con = new OracleConnection(link); oracle_con.Open(); return "success"; } catch (Exception ex) { return ex.Message; }}Oracle关闭:/// <summary>/// Oracle close/// </summary>/// <returns>Success:success Fail:reason</returns>public string Oracle_Close(){ try { if (oracle_con == null) { return "No database connection"; } if (oracle_con.State == ConnectionState.Open) { oracle_con.Close(); oracle_con.Dispose(); } else { if (oracle_con.State == ConnectionState.Closed) { return "success"; } if (oracle_con.State == ConnectionState.Broken) { return "ConnectionState:Broken"; } } return "success"; } catch (Exception ex) { return ex.Message; }}Oracle的增删改:/// <summary>/// Oracle insert,delete,update/// </summary>/// <param name="sql">insert,delete,update statement</param>/// <returns>Success:success + Number of affected rows; Fail:reason</returns>public string Oracle_Insdelupd(string sql){ try { int num = 0; if (oracle_con == null) { return "Please open the database connection first"; } if (oracle_con.State == ConnectionState.Open) { OracleCommand oracleCommand = new OracleCommand(sql, oracle_con); num = oracleCommand.ExecuteNonQuery(); } else { if (oracle_con.State == ConnectionState.Closed) { return "Database connection closed"; } if (oracle_con.State == ConnectionState.Broken) { return "Database connection is destroyed"; } } return "success" + num; } catch (Exception ex) { return ex.Message.ToString(); }}Oracle的查:/// <summary>/// Oracle select/// </summary>/// <param name="sql">select statement</param>/// <param name="record">Success:success; Fail:reason</param>/// <returns>select result</returns>public DataSet Oracle_Select(string sql, out string record) try { DataSet dataSet = new DataSet(); if (oracle_con != null) { if (oracle_con.State == ConnectionState.Open) { OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(sql, oracle_con); oracleDataAdapter.Fill(dataSet, "sample"); oracleDataAdapter.Dispose(); record = "OK"; return dataSet; } if (oracle_con.State == ConnectionState.Closed) { record = "Database connection closed"; } else if (oracle_con.State == ConnectionState.Broken) { record = "Database connection is destroyed"; } } else { record = "Please open the database connection first"; } record = "error"; return dataSet; } catch (Exception ex) { DataSet dataSet = new DataSet(); record = ex.Message.ToString(); return dataSet; }}⼩编发现以上这种封装⽅式还是很⿇烦,每次对Oracle进⾏增删改查的时候还得先打开数据库,最后还要关闭,实际运⽤起来⽐较⿇烦。

oracle自增长字段修改方法

oracle自增长字段修改方法

oracle自增长字段修改方法Oracle是一种关系型数据库管理系统,常用于企业级应用程序的开发和管理。

在Oracle中,自增长字段是一种非常常见的需求,它能够自动为每条新记录生成一个唯一标识符,方便数据的管理和查询。

本文将介绍如何使用Oracle来创建和修改自增长字段。

一、创建自增长字段在Oracle中,创建自增长字段可以通过使用序列(Sequence)和触发器(Trigger)来实现。

下面是具体的步骤:1. 创建序列序列是一种用于生成唯一数值的对象。

通过以下语句可以创建一个序列:CREATE SEQUENCE sequence_nameSTART WITH 1INCREMENT BY 1;其中,sequence_name是序列的名称,START WITH指定序列的初始值,INCREMENT BY指定每次递增的步长。

2. 创建触发器触发器是一种在数据库中某个事件发生时自动执行的代码。

通过以下语句可以创建一个触发器:CREATE OR REPLACE TRIGGER trigger_nameBEFORE INSERT ON table_nameFOR EACH ROWBEGINSELECT sequence_name.NEXTVAL INTO :new.auto_increment_column FROM dual;END;其中,trigger_name是触发器的名称,table_name是表的名称,auto_increment_column是自增长字段的名称,sequence_name是之前创建的序列的名称。

3. 修改字段属性通过以下语句可以将字段的属性修改为自增长:ALTER TABLE table_nameMODIFY (auto_increment_column NUMBER DEFAULT sequence_name.NEXTVAL);其中,table_name是表的名称,auto_increment_column是自增长字段的名称,sequence_name是之前创建的序列的名称。

Oracle数据库中序列(SEQUENCE)的用法详解

Oracle数据库中序列(SEQUENCE)的用法详解

在Oracl‎e数据库中,什么是序列‎呢?它的用途是‎什么?序列(SEQUE‎N CE)其实是序列‎号生成器,可以为表中‎的行自动生‎成序列号,产生一组等‎间隔的数值‎(类型为数字‎)。

其主要的用‎途是生成表‎的主键值,可以在插入‎语句中引用‎,也可以通过‎查询检查当‎前值,或使序列增‎至下一个值‎。

创建序列需‎要C REA‎T E SEQUE‎N CE系统‎权限。

序列的创建‎语法如下:CREAT‎E SEQUE‎N CE 序列名 [INCRE‎M ENT BY n] [START‎WITH n] [{MAXVA‎L UE/ MINVA‎L UE n|NOMAX‎V ALUE‎}] [] [{CACHE‎n|NOCAC‎H E}];INCRE‎M ENT BY 用于定义序‎列的步长,如果省略,则默认为1‎,如果出现负‎值,则代表序列‎的值是按照‎此步长递减‎的。

START‎WITH 定义序列的‎初始值(即产生的第‎一个值),默认为1。

MAXVA‎L UE 定义序列生‎成器能产生‎的最大值。

选项NOM‎A XVAL‎U E是默认‎选项,代表没有最‎大值定义,这时对于递‎增序列,系统能够产‎生的最大值‎是10的2‎7次方;对于递减序‎列,最大值是-1。

MINVA‎L UE定义‎序列生成器‎能产生的最‎小值。

选项NOM‎A XVAL‎U E是默认‎选项,代表没有最‎小值定义,这时对于递‎减序列,系统能够产‎生的最小值‎是?10的26‎次方;对于递增序‎列,最小值是1‎。

CYCLE‎和NOCY‎C LE 表示当序列‎生成器的值‎达到限制值‎后是否循环‎。

C YCLE‎代表循环,NOCYC‎L E代表不‎循环。

如果循环,则当递增序‎列达到最大‎值时,循环到最小‎值;对于递减序‎列达到最小‎值时,循环到最大‎值。

如果不循环‎,达到限制值‎后,继续产生新‎值就会发生‎错误。

CACHE‎(缓冲)定义存放序‎列的内存块‎的大小,默认为20‎。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle中创建、修改、删除序列
ORACLE没有象SQL SERVER中一样的自增加字段,要实现只
能通过SEQUENCE来实现。

1、创建序列语法:(需要CREATE SEQUENCE系统权限)
CREATE SEQUENCE序列名
[INCREMENT BY n] ---用于定义序列的步长。

如果省略,则默认为1,如果出现负值,则代表序列的值是按照此步长递减的。

[START WITH n] ---定义序列的初始值(即产生的第一个值),默认为1。

[{MAXVALUE/MINVALUE n|NOMAXVALUE}] ---定义序列生成器能产生的最大值。

选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增
序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是
-1。

MINVALUE定义序列生成器能产生的最小值。

选项NOMAXVALUE是
默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生
的最小值是?10的26次方;对于递增序列,最小值是1。

[{CYCLE|NOCYCLE}] ---表示当序列生成器的值达到限制值后是否循环。

CYCLE代表循环,NOCYCLE代表不循环。

如果循环,则当递增序列达到最大值时,循环到最
小值;对于递减序列达到最小值时,循环到最大值。

如果不循环,达到限制值后,继续产生新值
就会发生错误。

[{CACHE n|NOCACHE}]; ---CACHE(缓冲)定义存放序列的内存块的大小,默认为20。

NOCACHE表示不对序列进行内存缓冲。

对序列进行内存缓冲,可以改善序列的性能。

2、修改序列语法:
ALTER SEQUENCE 序列名
[INCREMENT BY n]
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}];
*不能修改序列的初始值
3、删除序列语法:
DROP SEQUENCE 序列名;。

相关文档
最新文档