oracle数据如何自动累加,oracle 增加数据

oracle数据库中怎么取出特定的值并将其累加,在将累加后的结果存入数据库

从中取出所有nck相同的hweight的值,是更新到所有nck相同的数据的hweight2字段中么?

员工经过长期磨合与沉淀,具备了协作精神,得以通过团队的力量开发出优质的产品。创新互联坚持“专注、创新、易用”的产品理念,因为“专注所以专业、创新互联网站所以易用所以简单”。公司专注于为企业提供成都网站制作、网站建设、微信公众号开发、电商网站开发,成都小程序开发,软件按需规划网站等一站式互联网企业服务。

这个是更新所有数据的hweight2为hweight的累加。

update tab a set hweight2=(select sum(hweight) from tab b where a.nck=b.nck group by nck);

更新hweight3的值

update tab a set hweight3=hweight1-hweight-hweight2;

取值。

select hweight2,hweight3 from tab

这个累加可以写在存储过程中,在java中调用,也可以在java里面执行update语句。

Oracle 如何修改一个表字段的数据为自动增加

Create Sequence MySequence Start With 1 Increment By 1 Nocycle Nocache;说明:序列MySequence从1开始递增,每次加1,一直累加不循环。若把Nocache改为Cache,那么Oralce会在内存中预先放置一些Sequence以使存取速度更快。Cache取完后,Oracle会自动再取一组到Cache 。然而使用Cache可能会跳号,若遇到数据库突发异常,Cache里的Sequence会丢失。然后创建触发器:Create Or Replace Trigger MyTrigger Before Insert On TableName referencing old as old new as new for each rowbegin Select MySequence.NextVal To :new.ID From DUAL;end;

如何实现Oracle数据库Id的自动增加

序列结合触发器实现自动增加效果。

Oracle:

前提是: create table test(id char(5),name char(10));

(1)建立sequence

create sequence test_id increment by 1 start with 1;

(2)建立触发器

A)执行命令ed test打开窗口,填写以下内容

create or replace trigger test_trigger

before insert

on test

for each row

declare

primary_key_value char(5);

begin

select test_id.nextval into primary_key_value from dual;

:new.id:=primary_key_value ;

end;

B)保存后,执行get test

C)然后执行/

如果/执行有错误的话,可以通过show error来显示错误并修改。

(3)

SQL insert into test(name) values('one');

已创建 1 行。

SQL select * from test;

ID NAME

----- ----------

1 one

哪位知道在PL/SQL Developer里怎么设置Oracle数据库的字段自动递增功能哇??

通过创建序列来实现

ORACLE

SEQUENCE的简单介绍

在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;

oracle 数据累加

如果是数据累加的话,可以通过sum函数来实现,如果是计数的话,可以通过count来实现。

sql:select username ,count(accountNo) as count,sum(amount) as amount

from tablename order by username desc group by username;

以上就可以求出username下,accountNo的条数和对应的总amount,之后通过username字段降序排序。


文章标题:oracle数据如何自动累加,oracle 增加数据
网站链接:http://scyanting.com/article/hdgogh.html