当前位置:首页 » 数据仓库 » 数据库建序列号
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数据库建序列号

发布时间: 2022-05-31 10:49:26

A. C#(winform)如何向oracle数据表中插入自增序列号(需要在oracle中建立sequence序列)!

你如果仅仅是要实现一个自增序列号 就用oracle的sequence呗 简单又方便
给你一个创建sequence例子,在数据库中先创建一个seq
CREATE SEQUENCE SEQ_XH
START WITH 1
MAXVALUE 99999999
MINVALUE 1
NOCYCLE
CACHE 10
ORDER;

然后你每次在程序里面要在数据表中新增记录的时候,相应主键字段就使用 SEQ_XH.nextval 就可以实现自增字段了

B. 数据库中的序列是什么具体概念

序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。创建序列需要CREATE SEQUENCE系统权限。序列的创建语法如下: CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}]; INCREMENT BY 用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表序列的值是按照此步长递减的。 START WITH 定义序列的初始值(即产生的第一个值),默认为1。 MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。 MINVALUE定义序列生成器能产生的最小值 ...

C. oracle 数据库 数据表自动生成序号 怎么添加

需要先创建序列,然后nextval添加数据使其自动生成序号。

1、创建表:

sql">createtabletest
(idint,
namevarchar2(20));

2、创建序列:

Createsequenceseq_test_id
Incrementby1
Startwith1
Maxvalue999999
Minvalue1
Nocycle
nocache;

3、插入数据:

insertintotestvalues(seq_test_id.nextval,'badkano');

这样可见,序号是添加成功的。

D. 只知道一些常见的数据库对象,今天有人让我建序列,很茫然,不知道。数据库还有那些对象

有 Funciton , 也就是函数
有 Procere , 也就是存储过程
有 Package, 也就是 代码包 (包含 head 和 body 两部分, 可以理解为一个包里面,定义多个 存储过程或函数)
有 Types, 也就是 自定义数据类型
有 Triggers, 也就是 触发器
有 Jobs, 也就是 数据库作业 (定期执行的)
有 Table , 也就是表 (表有 普通表, 临时表, 分区表)
有 Index, 也就是索引
有 Constraint, 也就是 约束 ( 也就是 某个表里面的某一列, 必须满足什么约束条件)
有 View, 也就是 视图
有 Materialized View, 叫 “物化视图”, 这个有点复杂的。
有 Sequence , 叫 序列号。
有 User , 叫 用户
有 Profile , 叫 用户属性文件 (用于限制 每个用户 占有数据库资源的限制)
有 Synonyms, 叫 “同义词” (用于 便捷地访问 其他用户下的对象)
有 Database link 叫 “链接数据库” (用于访问 其他机器上的 Oracle 数据库)
有 TableSpace 叫 表空间 (用于 存放表数据的)
有 CURSOR 叫 游标, 用于 存储过程里面, 遍历数据的。

E. sql server 2008 请教怎样生成序列号

你这是什么数据库? SQL Server 的话,你可以把CID设为自增加1,这样就可以实现在插入的时候自动生成CID的值了; 如果是oracle,你可以在oracle数据库里建个sequense,通过 select sequense.next() from al 得到自增的序列号;

F. oracle表中怎么建序列

oracle表中创建序列语法:

CREATE SEQUENCE name

[INCREMENT BY n]

[START WITH n]

[{MAXVALUE n | NOMAXVALUE}]

[{MINVALUE n | NOMINVALUE}]

[{CYCLE | NOCYCLE}]

[{CACHE n | NOCACHE}]

示例:

increment by n:表明值每次增长n(步长)。

start with n: 从n开始。

{MAXVALUE n | NOMAXVALUE}: 设置最大值。

{MINVALUE n | NOMINVALUE}: 设置最小值,start with不能小于最小值。

CYCLE | NOCYCLE : 是否循环,建议不使用

CACHE n | NOCACHE : 是否启用缓存

2、插入数据到表中

示例:

INSERT INTO emp VALUES

(emp_sequence .nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);

Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。

(6)数据库建序列号扩展阅读:

sql server数据库里建序列:

alter table cust_infoaddsequence int

insert into cust_info (sequence)

select row_number() over(orderbycust_id) as cust_id_seq from cust_info

G. postgreSQL怎样创建一个序列号/自动递增的字段

在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, 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_sequence.CURRVAL emp_sequence.NEXTVAL 可以使用sequence的地方: - 不包含子查询、snapshot、VIEW的 SELECT 语句 - INSERT语句的子查询中 - NSERT语句的VALUES中 - UPDATE 的 SET中 可以看如下例子: INSERT INTO emp VALUES (empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20); SELECT empseq.currval FROM DUAL; 但是要注意的是: - 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。明白? - 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。 2、Alter Sequence 你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create . Alter sequence 的例子 ALTER SEQUENCE emp_sequence INCREMENT BY 10 MAXVALUE 10000 CYCLE -- 到10000后从头开始 NOCACHE ; 影响Sequence的初始化参数: SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。 可以很简单的Drop Sequence DROP SEQUENCE order_seq; 示例Sequence: CREATE SEQUENCE SCOTT.DMIFPOSTID START WITH 261 INCREMENT BY 1 NOMINVALUE NOMAXVALUE NOCYCLE CACHE 20 NOORDER 3、如何使用 第一种方法:一般来说需要新建一个触发器(TRIGGER),使得在插入数据之前先运行Sequence生成自增号。示例Trigger -- Create table create table TEST ( SEQ INTEGER not null, NAME VARCHAR2(20), PWD VARCHAR2(20) ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); -- Create/Recreate primary, unique and foreign key constraints alter table TEST add constraint PK_TEST primary key (SEQ) using index tablespace USERS pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); create or replace trigger TI_TEST before insert on test for each row declare -- local variables here begin SELECT SEQ_TEST.NEXTVAL INTO :NEW.SEQ FROM DUAL; end TI_TEST; 插入语句 insert into test values('aa','aa'); 第二种方法:可以在插入数据时直接调用。 insert into table(id,name) values(seq_name.nextval,'名字');

H. 在sqlserver2000中如何批量生成序列号

会写存储过程吗?
会写触发吗?
如果会,如果能看懂以下代码你就能完成,否则,你需要看看存储过程相关的书。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION V_GetStr
(
@位数 int, --需要的位数(范围1-32)
@数值 int --需要的数值
)
RETURNS varchar(32)
AS
BEGIN
declare @r varchar(16)
declare @r2 varchar(16)
declare @r3 varchar(32)
declare @r4 varchar(32)

select @r='0000000000000000'
select @r2 = @数值
select @r3 = @r + @r2
select @r4= right(@r3,@位数)
return(@r4)

END
GO

--调用示例(生成10位长度的),注意以下调用需要在存储过程中完成
--declare @IDme varchar(16)
--select @IDme = (select beyczyxx.ID from beyczyxx where beyczyxx.ID = 1 )
--select dbo.V_GetStr(10,@IDme)

I. oracle数据库怎么建sequences作为自增长序列

其实Oracle是没有SQL Server 的自增长的列的概念。

我通过这种方式就是为了尽可能模拟。

seq_a 是序列号
insert into t_a (id, value) values(seq_a.nextval,'test'); 这就是Oracle的经典(后者通常)的使用方法。
id当然就是你所谓的自增长列(再次强调,Oracle没有这个概念)
只有通过触发器+sequence,能够实现你所谓自增长列。

J. oracle数据库,怎么给已有很多数据的表填充自增序列字段

两个方法:
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_USERINFO.NEXTVAL,'111','11','11','11','11')