两个方法:
1,重新创建一个表,然后创建一个序列,把老数据导入新表,删除老表,修改新表名字为老表
2,直接在原来表上增加一个字段,创建一个序列,通过更新的方式修改老数据的这个字段。
具体 *** 作主要是2点,首先是创建一个序列名sequence;
然后是,insert语句的时候:将自增的字段的位置,写成序列名nextval。
从创建表开始,然后创建sequence,到insert语句
1首先创建表
CREATE TABLE "FLOWCAL""T_USERINFO"
( "C_ID" NUMBER(,0),
"C_USER" VARCHAR2(20 BYTE),
"C_PASSWORD" VARCHAR2(20 BYTE),
"C_ROLE" VARCHAR2(20 BYTE),
"C_COMMENT1" VARCHAR2(20 BYTE),
"C_COMMENT2" VARCHAR2(20 BYTE)
)
现在想让C_ID自增一。
2首先创建一个oracle的sequence,sql语句如下:
create sequence 序列名
increment by 1
start with 1
maxvalue 999999999
cycle;
建立一个最小为1,最大为999999999的一个序列号会自动循环的序列
下面的sequence,如下:
CREATE SEQUENCE "FLOWCAL""SEQ_USERINFO"
MINVALUE 0
MAXVALUE 9999999999999999999999999999
INCREMENT BY 1
START WITH 24
CACHE 20
ORDER
CYCLE ;
3通过序列名nextval实现插入时,字段的自增一
当向表中插入数据时,SQL语句写法如下:
SQL> insert into 表名 values(,列1值,列2值,);
"序列名"可以替换为自己需要的名字
下面insert语句:
insert into T_USERINFO values(SEQ_USERINFONEXTVAL,'111','11','11','11','11')
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
上边的代码是创建序列的,一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
emp_sequenceCURRVAL
emp_sequenceNEXTVAL
一
创建测试表
SQL>
create
table
t1(id
number,sal
number);
二
创建序列,初始值1,增长步长1,最大值999
SQL>
create
sequence
seq_t1
increment
by
1
start
with
1
maxvalue
999;
三
插入数据,引用序列
SQL>
insert
into
t1
values(seq_t1nextval,10000);
SQL>
insert
into
t1
values(seq_t1nextval,20000);
SQL>
commit;
四
sequences自动增长
SQL>
select
from
t1;
ID
SAL
----------
----------
2
10000
3
20000
序列是Oracle i提供的用于按照设定的规则自动产生数据的方案对象 在某些数据表的结构中 有些字段需要这种特性 比如 对于某个学生数据表的学号关键字段 用户可以希望在录入数据时 能够自动在上一个记录的学号字段上自动加 等 由于Oracle i提供的 种基本数据类型并没有这样的功能 可以通过序列方案对象来实现 序列的创建 下面介绍在企业管理器中如何创建序列 ( )在企业管理器中选择myoracle mynet/方案/序列选项 单击鼠标右键 在出现的快捷菜单里选择创建选项 如图 所示 ( )出现如图 所示的创建序列的一般信息选项卡 在名称文本框里输入待定义的序列的名称 TEMPSEQUENCE 在方案下拉列表框里选择序列所属的用户名 SCOTT 序列类型参数有两个选项 若选择升序单选钮 则表示将创建从初始值向最大值递增的序列 这是创建序列时的默认设置 若选择降序单选钮 则表示将创建从初始值向最小值递减的序列 对值可以进行设置的参数如下 在最小值文本框里设置序列允许的最小值 创建序列时该字段最初为空 如果单击创建按钮时该字段为空 则对升序序列使用默认值 而对降序序列使用默认值 在最大值文本框里设置序列允许的最大值 创建序列时该字段最初为空 如果单击创建按钮后该字段为空 则将对升序序列使用默认值 而对降序序列使用默认值 在时间间隔文本框里设置递增序列递增的间隔数值(升序序列)或递减序列递减的间隔数值(降序序列) 创建序列时该字段最初为空 如果单击创建按钮后该字段为空 将使用默认值 该字段只能为正整数 在初始值文本框里设置序列的起始值 如果单击创建按钮后该字段为空 对升序序列将使用该序列默认的最小值 对降序序列将使用该序列默认的最大值 对选项可以设置的参数如下 若选择循环值复选框 则表示指定在达到序列最小值或最大值之后 序列应继续生成值 对升序序列来说 在达到最大值后将生成最小值 对降序序列来说 在达到最小值后将生成最大值 如果未选择该复选框 序列将在达到最小值或最大值后停止生成任何值 默认情况下是未选择状态 若选择排序值复选框 则指定序列号要按请求次序生成 默认情况下是未选择状态 在高速缓存中设置由数据库预分配并存储的值的数目参数 若选择默认值单选钮 则表示将设置默认值为 默认情况下选择此选项 若选择无高速缓存单选钮 则表示指定不预分配序列值 若选择大小单选钮 则表示在文本框里输入可接受的值 最小值为 对循环序列来说 该值必须小于循环中值的个数 如果序列能够生成的值数的上限小于高速缓存大小 则高速缓存大小将自动改换为该上限数 完成设置后单击创建按钮 ( )成功创建序列后 出现如图 所示界面 单击 确定 按钮 ( )读者也可以在SQLPlus Worksheet中执行下列SQL程序创建序列 ―――――――――――――――――――――――――――――――――――――CREATE SEQUENCE SCOTT TEMPSEQUENCE INCREMENT BY START WITH MAXVALUE E MINVALUE NOCYCLE CACHE NOORDER―――――――――――――――――――――――――――――――――――――配套程序位置 第 章\ createsequence sql 序列的使用 下面介绍在向数据表中插入数据时如何使用序列 ( )首先为实例建立一个数据表 SCOTT SEQUENCE_TABLE 为简化起见 该数据表仅包含一个类型为 NUMBER 的数据列 NO 在如图 所示的创建表的一般信息选项卡中进行如下设置 在名称文本框中输入 SEQUENCE_TABLE 在方案下拉列表框中选择 SCOTT 在表空间下拉列表框中选择 USERS 在名称单元格中输入 NO 在数据类型下拉列表框单元格中选择 NUMBER 完成设置后单击创建按钮 ( )读者也可以在SQLPlus Worksheet中执行下列SQL代码创建数据表 SCOTT SEQUENCE_TABLE ―――――――――――――――――――――――――――――――――――――CREATE TABLE SCOTT SEQUENCE_TABLE ( NO NUMBER( ) NOT NULL)TABLESPACE USERS ―――――――――――――――――――――――――――――――――――――配套程序位置 第 章\ createsequencetable sql ( )在插入新的记录时 使用刚创建的 TEMPSEQUENCE 序列来自动产生 NO 数据列的值 在SQLPlus Worksheet里执行下面的SQL代码 执行的结果如图 所示 ―――――――――――――――――――――――――――――――――――――INSERT INTO SCOTT SEQUENCE_TABLE(NO)VALUES(SCOTT TEMPSEQUENCE NEXTVAL);―――――――――――――――――――――――――――――――――――――配套程序位置 第 章\ insertsequencetable sql SCOTT TEMPSEQUENCE NEXTVAL 表分配下一个惟一的 可用的序列号 执行 SCOTT TEMPSEQUENCE NEXTVAL 后 可以使用 SCOTT TEMPSEQUENCE CURRVAL 来标识上一个已经存储的序列值 ( )在SQLPlus Worksheet中可以执行查询数据表 SCOTT SEQUENCE_TABLE 数据的语句 执行结果如图 所示 表明序列 SCOTT SEQUENCE 产生的值已经成功录入数据表中 ―――――――――――――――――――――――――――――――――――――select from scott sequence_table;―――――――――――――――――――――――――――――――――――――配套程序位置 第 章\ selectsequencetable sql 序列的删除 下面介绍在企业管理器中如何删除序列 ( )在创建好的序列 SEQUENCE 上用单击鼠标右键 在出现的快捷菜单里选择移去选项 如图 所示 ( )出现如图 所示的删除序列确认界面 单击是按钮 lishixinzhi/Article/program/Oracle/201311/17301
create sequence seq2
NOMAXVALU
start with 1
increment by 1;
1创建序列
ORACLE序列的语法格式为:
CREATE SEQUENCE 序列名
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}];
参考自:>
sequence
要到
sql
servler2012
的版本,
才有。
SQL
Server
2000,
2005,
2008
是没有
sequence
这样的对象的。
如果你要实现一个
自动递增列的处理
SQL
Server
通过
IDENTITY
来设置
参数有2个,一个是“初始值”
一个是“增量”。
默认情况下
INSERT
语句中,不能对
IDENTITY
的字段进行赋值。
对于
IDENTITY
的列
SQL
Server
在
INSERT
的时候,会自动忽略掉。
当IDENTITY列中间的数据被删除,造成数据不连续的时候。可以通过
SET
IDENTITY_INSERT
表名
ON/OFF
语句来
允许/禁止
对IDENTITY列进行显式的插入动作。
IDENTITY只能在如下情况下建立:
在创建表时创建新的IDENTITY列
在现有表中创建新的IDENTITY列
不能
把已经存在的列,修改为IDENTITY列
1>
CREATE
TABLE
test_create_tab2
(
2>
id
INT
IDENTITY(1,
1)
PRIMARY
KEY,
3>
val
VARCHAR(10)
4>
);
5>
go
1>
INSERT
INTO
test_create_tab2(val)
VALUES
('NO
id');
2>
go
(1
行受影响)
以上就是关于oracle数据库,怎么给已有很多数据的表填充自增序列字段全部的内容,包括:oracle数据库,怎么给已有很多数据的表填充自增序列字段、oracle数据库创建序列问题、oracle数据库怎么建sequences作为自增长序列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)