반응형
한 줄 정리 : 시퀀스는 값의 무결성 (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 |