개발자의 끄적끄적

[oracle] 오라클 sequence 시퀀스 생성 / 검색 / 적용 / 수정 / 삭제 [펌] 본문

개발/sql

[oracle] 오라클 sequence 시퀀스 생성 / 검색 / 적용 / 수정 / 삭제 [펌]

효벨 2019. 12. 2. 01:00
728x90
반응형

[oracle] 오라클 sequence 시퀀스 생성 / 검색 / 적용 / 수정 / 삭제 [펌] 

 

오라클 시퀀스에 관해 알아보던중

 

정리가 너무나 잘되어 있어서 소장 하고 꾸준히 참고하고자 퍼왔습니다!

 

출처는 맨~아래 명시했습니다!

 

 

오라클에서 데이터베이스의 무결성을 위해 제약 조건을 설정하고, 그중 행을 구분하기 위해 기본 키(PRIMARY KEY / not null + unique)를 설정한다고 설명하였다. 이때 데이터가 입력되는 순서를 기본 키로 지정한다고 하였을 때 사용자가 직접 입력을 해야 한다면 어려움이 있을 것이다. 이렇듯 숫자를 자동으로 생성하여 기본 키의 조건을 만족시켜 주며, 편의를 제공해줄 수 있는 방법이 시퀀스(sequence)라는 것이다. 그러면 시퀀스를 생성하고 검색, 적용, 수정, 제거하는 방법에 대해서 알아보도록 하자.

시퀀스(SEQUENCE) 생성

 시퀀스를 생성하는 형식은 아래와 같다. 기본적으로 테이블이나 뷰 등과 생성하는 방법이 비슷하다.

 시퀀스는 기본적으로 "CREATE SEQUENCE 시퀀스명"으로 생성한다. 대괄호([]) 안의 내용 들은 옵션이고 생략이 가능하다. 옵션의 내용들은 보는 것처럼 퀀스가 시작할 숫자의 번호와 숫자가 자동으로 몇씩 증가시키고 시퀀스의 최댓값과 최솟값을 설정할 수 있고 최댓값이 되었을 때 번호를 처음부터 반복할 것인지 반복하지 않을 것인지 지정할 수 있다. 옵션을 미설정하면 기본값들이 자동으로 설정된다. 시작번호 1, 증가 값 1, 최솟값 1, NOCYCLE, 최댓값은 매우 큰 수(1026 / 오라클 버전마다 다름)가 기본적으로 설정된다. 시퀀스를 생성하고 검색하는 코드는 아래와 같다.

-- 시퀀스 생성 CREATE SEQUENCE NO_SEQ START WITH 1 INCREMENT BY 1 MAXVALUE 10000 MINVALUE 1 NOCYCLE; -- 시퀀스 검색(현재 계정의 모든 시퀀스를 보여줌) SELECT SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, CYCLE_FLAG FROM USER_SEQUENCES;

 

 

시퀀스 적용

 실제 테이블에 시퀀스를 적용하는 방법에 대해서 알아보도록 하자. 우선 시퀀스를 적용하기 위한 테이블을 하나 생성하도록 하자.

-- MEMBERINFO 테이블 생성 CREATE TABLE MEMBERINFO( NO NUMBER PRIMARY KEY, -- 기본키(시퀀스 적용할 컬럼) NAME VARCHAR2(10) NOT NULL, PHONENUMBER VARCHAR2(20) NOT NULL );

 시퀀스를 테이블에 적용하기 위해서는 INSERT 문을 이용해서 데이터를 입력하는 곳에 "시퀀스명.NEXTVAL"를 입력하면 된다.(시퀀스는 대부분 INSERT 문과 사용된다.) 위의 생성한 시퀀스를 이용해서 MEMBERINFO 테이블에 입력하고 확인하여 보자.

--데이터 추가 INSERT INTO MEMBERINFO VALUES(NO_SEQ.NEXTVAL, 'JOKER', '01012345678'); INSERT INTO MEMBERINFO VALUES(NO_SEQ.NEXTVAL, 'BATMAN', '01012340987'); INSERT INTO MEMBERINFO VALUES(NO_SEQ.NEXTVAL, 'Quinn', '01010041004'); --MEMBERINFO 테이블 검색 SELECT * FROM MEMBERINFO; --현재 시퀀스의 값 검색 SELECT NO_SEQ.CURRVAL FROM DUAL;

 시퀀스를 적용하여 데이터를 입력하면 자동적으로 값이 증가되면서 저장되는 것을 알 수 있다. 이때, NEXTVAL는 현재 시퀀스 값의 다음 값을 반환하고, CURRVAL는 현재 시퀀스 값을 반환한다.

 

 

시퀀스 수정

시퀀스를 설정한 값을 수정하는 방법은 아래와 같다.

 ALTER 문을 이용하여 시퀀스 수정이 가능하다. CREATE 문과 구조가 거의 동일하다. 단, START 값은 수정이 불가능하기 때문에 시작 값을 다시 지정하려면 삭제 후 재 생성을 해야 한다. 위에서 생성했던 시퀀스의 최댓값을 수정하는 코드는 아래와 같다.

-- 시퀀스 수정 ALTER SEQUENCE NO_SEQ MAXVALUE 1000; -- 시퀀스 수정 결과 검색 SELECT SEQUENCE_NAME, MAX_VALUE FROM USER_SEQUENCES;

 

 

시퀀스 삭제

 시퀀스를 삭제하는 방법은 DROP 명령어를 사용하면 된다. 삭제하는 형식은
" DROP SEQEUNCE 시퀀스명 " 이다.

-- 시퀀스 삭제 DROP SEQUENCE NO_SEQ; -- 시퀀스 삭제 결과 확인 SELECT SEQUENCE_NAME FROM USER_SEQUENCES ; -- MEMBERINFO 테이블 검색 SELECT * FROM MEMBERINFO;

 테이블을 검색해보면 시퀀스를 삭제하여도 이미 입력한 데이터는 영향을 받지 않는 것을 알 수 있다.

 

 

 

[출처] [Oracle/오라클] 시퀀스(sequence) 생성 / 검색 / 적용 / 수정 / 삭제|작성자 JOKER

반응형
Comments