Practice makes perfect

[DataBase] 시퀀스(Sequence) 본문

빅데이터/DataBase

[DataBase] 시퀀스(Sequence)

kerpect 2020. 4. 14. 21:36

시퀀스(sequence)

: 순서를 뜻하는 것으로, 몇 가지 작동을 어떤 기준에 따라 공간적 또는 시간적으로 순서를 정해 놓는 것을 말합니다.

즉, 오라클에서 행을 구분하기 위해서 기본 키를 두는데 그 기본 키는 중복 된 값을 가질 수 있으므로 항상 유일한 값을 가져야 합니다. 그런 기본 키가 유일한 값을 갖도록 사용자가 직접 생성해내는 것이 아니라 숫자를 자동으로 생성해 주는 명령어를 의미합니다.

1) 테이블의 시퀀스 생성

형태 : create squence 테이블 이름 start with increment by N;

create sequence memos_seq start with 1 increment by 1;

 

-- 시작의 값을 1로하고  증가하는 값 1로 하여 계속 증가하게 합니다.

 

2)  데이터 입력: 일련번호 포함

 

형태 : insert into 테이블(컬럼1, 컬럼2...)  values(시퀀스.nextval,'내용2'...);

num 에 memos_seq.nextVal 넣어서 자동으로 증가하도록 합니다. 
insert into memos(num, name) values(memos_seq.nextVal,'홍길동');
insert into memos(num, name) values(memos_seq.nextVal,'이순신');
insert into memos(num, name) values(memos_seq.nextVal,'강감찬');

-- memos_seq.nextVal : 1씩 증가 하면서 하나의 값을 반환해 줍니다.  
-- 데이터 베이스가 자동으로 숫자를 관리해 줍니다. 

 

3) 현재 시퀀스가 어디까지 증가되어져 있는지 확인

 

형태 : selet 시퀀스 이름. currval from dual;

select memos_seq.currVal from dual; 
-- CURRVAL : 현재 값을 반환해줍니다. 

 

4) 시퀀스 수정

 

형태 : alter sequence 시퀀스 이름 maxvalue N;

alter sequence memos_seq maxvalue 4; --  최대 증가값을 4까지로 제한.

insert into memos(num, name) values(memos_seq.nextVal, '안중근'); -- 삽입 완료.
insert into memos(num, name) values(memos_seq.nextVal, '안창호'); -- error 최대값 초과

 

5) 시퀀스 삭제

 

형태: drop sequence 시퀀스 명;

drop sequence memos_seq;

 

6) 시퀀스 없는 상태에서 자동 증가값 구현

insert into memos(num,name) 
values((select max(num)+1 from memos), '세종대왕');
-- 최대값에 +1을 해서 최종의 결과 값을 num의 값에 들어가게하는 것이다. 
-- select max(num) from memos; 언제든 많이 사용되는 형태입니다. 기억해두세요.

 

 

TIP)

시퀀스는 컴퓨터를 부팅 또는 다른 사람의 파일을 가지고 와서 사용할 때, 파일의 수정사항에 대해서  내부에 가지고 있는 시퀀스가 다름으로 시퀀스의 번호가 random 으로 나누어질 수 있습니다.  그렇기 때문에 새롭게 모든 시퀀스를 삭제하고 순차적으로 진행해야 합니다.  
이러한 이유로 시퀀스 없는 상태에서 자동 증가값 구현 하는 사람들이 많으며 시퀀스 번호로 일련번호를 넣는것을 선호하지 않습니다. 그래서 그룹 함수의 max 함수를 사용하여 번호를 삽이하는 형태로 구현을 선호 합니다.

 

 

https://link.coupang.com/a/bsbQYm

 

햇반 백미밥, 200g, 15개

COUPANG

www.coupang.com

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

'빅데이터 > DataBase' 카테고리의 다른 글

[DataBase] 데이터 제어어(DCL : Data Control Language)  (0) 2020.04.14
[DataBase] 인덱스(Index)  (0) 2020.04.14
[DataBase] 뷰(View)  (0) 2020.04.13
[DataBase] 서브 쿼리 (Sub - Query)문  (0) 2020.04.12
[DataBase] 조인(JOIN)  (0) 2020.04.12