데이터베이스 시퀀스

메타플랫폼대표
|2024. 5. 28. 15:26
반응형

한 줄 정리 : 시퀀스는 값의 무결성 (not null, unique = primary key)을 보장시켜주는 인덱스라고 생각하면 된다.

인덱스가 자동으로 생성되는 배열 ArrayList 같은 느낌도 있다.(하지만, ArrayList는 중간에 빠지면 채울 수 있는데 시퀀스는 중간에 빠지면 채울 수 있지 않다. 순서대로 나열된다.)

 

MySQL mysql auto_increment = Oracle Sequence

 

시퀀스란?
- 유일(UNIQUE)한 값을 생성해주는 오라클 객체이다.
- 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성 할 수 있다.
- 보통 PRIMARY KEY 값을 생성하기 위해 사용 한다.
- 메모리에 Cache되었을 때 시퀀스값의 액세스 효율이 증가 한다.
- 시퀀스는 테이블과는 독립적으로 저장되고 생성된다.

 

시퀀스는 서로 다른값을 주기 위해서 존재하는 것이다.

 

시퀀스 : 일련번호 관리 객체

create table mytb
(
idx int,memo varchar2(100)
)

alter table mytb add constraint pk_mytb_idx primary key(idx);

--              seq_테이블명_컬럼명
create sequence seq_mytb_idx
insert into mytb values(seq_mytb_idx.nextVal,'첫번째');
insert into mytb values(seq_mytb_idx.nextVal,'두번째');
-- 시퀀스는 nextVal이 호출될 때마다 1씩 증가한다.

select * from mytb

-- 시퀀스 옵션
create sequence seq_test
start with 10 -- 10부터 시작합니다.
increment by 10 -- 10,20,30,40,50.. 기준으로 올라갑니다.

select seq_test.nextVal,seq_test.currVal from dual
-- 시퀀스 활용하지 않고 일련번호 관리하기

create table mytb2
(
idx int,memo varchar2(100)
)

alter table mytb2 add constraint pk_mytb2_idx primary key(idx);

nvl (null value) : nvl(값,0)   mysql => ifnull(값,0)

select nvl(max(idx),0)+1 from mytb2

insert into mytb2 values((select nvl(max(idx),0)+1 from mytb2), 'data');

select * from mytb2
반응형

'데이터베이스↗' 카테고리의 다른 글

java JDBC  (0) 2024.05.29
데이터베이스 CRUD(생성,읽기,수정,삭제)  (1) 2024.05.28
데이터베이스 Join  (0) 2024.05.28
ERwin Data Modeler  (0) 2024.05.27
데이터베이스 Group by(그룹별 통계)  (0) 2024.05.27