1. 시퀀스
-> 오라클에서는 행을 구분하기 위해서 기본 키를 두고 있습니다. 기본키는 중복된 값을 가질 수 있으므로 항상 유일한 값을 가져야 합니다.
-> 기본 키가 유일한 값을 갖도록 사용자가 직접 값을 생성해내려면 부담이 클 것입니다.
-> 시퀀스는 테이블 내의 유일한 숫자를 자동으로 생성하는 자동 번호 발생기이므로 시퀀스를 기본키로 사용하게 되면 사용자의 부담을 줄일 수 있다.
--------------------------------------------------------------------------------------------------------------------------------------
1.1 시퀀스 생성하기 위한 기본 형식
CREATE SEQUENCE sequence_name
[START WITH n] -①
[INCREMENT BY n] -②
[{MAXVALUE n | NOMAXVALUE}] -③
[{MINVALUE n | NOMINVALUE}] -④
[{CYCLE | NOCYCLE}] -⑤
[{CACHE n | NOCACHE}] -⑥
①. START WITH
-> 시퀀스 번호의 시작값을 지정할 때 사용됩니다. 만일 1부터 시작되는 시퀀스를 생성하려면 START WITH 1 이라고 기술하면 됩니다.
②. INCREMENT BY
-> 연속적인 시퀀스 번호의 증가치를 지정할 때 사용됩니다. 만일 1씩 증가하는 시퀀스를 생성하려면 INCREMENT BY 1 이라고 기술하면 됩니다.
③. MAXVALUE n | NOMAXVALUE
-> MAXVALUE 은 시퀀스가 가질 수 있는 최대값을 지정합니다. 만일 NOMAXVALUE를 지정하게 되면 ASCENDING 순서일 경우에는 10의 27승이고
DESCENDING 순서일 경우에는 -1로 설정됩니다.
④. MINVALUE n | NOMINVALUE
-> MINVALUE은 시퀀스가 가질 수 있는 최소값을 지정합니다. 만일 NOMINVALUE을 지정하게 되면 ASCENDING 순서일 경우에는 1이고
DESCENDING 순서일 경우에는 10의26승으로 설정됩니다.
⑤. CYCLE | NOCYCLE
-> CYCLE은 지정된 시퀀스 값이 최대값까지 증가가 완료되게 되면 다시 START WITH 옵션에 지정한 시작 값에서 다시 시퀀스를 시작하도록 합니다.
NOCYCLE은 증가가 완료되게 되면 에러를 유발시킵니다.
⑥. CACHE n | NOCACHE
-> CACHE은 메모리상의 시퀀스 값을 관리하도록 하는 것인데 기본 값은 20입니다. NOCACHE는 원칙적으로 메모리 상에서 시퀀스를 관리하지 않습니다.
--------------------------------------------------------------------------------------------------------------------------------------
실습
/*데이터가 입력되는 순서를 기본키로 지정한다고 하였을 때 사용자가 직접 입력을 해야 한다면
어려움이 있다. 이렇듯 숫자를 자동으로 생성하여 기본 키의 조건을 만족시켜 주며, 편의를
제공해줄 수 있는 방법이 시퀀스(sequence)라는 것이다.
*/
--시퀀스 생성
CREATE SEQUENCE JONG_KYU -- JONG_KYU라는 시퀀스 객체의 이름을 저장
START WITH 1 --
INCREMENT BY 1 -- 증가치에 대한 정보
MAXVALUE 10000 -- 최대값
MINVALUE 1 -- 최소값
NOCYCLE;
--------------------------------------------------------------------------------------------------------------------------------------
1.2 시퀀스 삭제
--MEMBERINFO 테이블 검색
SELECt * from MEMBERINFO;
테이블을 삭제하여도 이미 입력한 데이터는 영향을 받지 않는 것을 알 수 있다.!!!!
--------------------------------------------------------------------------------------------------------------------------------------
1.3 CURRVAL, NEXTVAL
-> 시퀀스의 현재 값을 알아내기 위해서는 CURRVAL을 사용하고, 다음 값을 알아내기 위해서는 NEXTVAL를 사용합니다.
CURRVAL : 현재 값을 반환한다.
NEXTVAL : 현재 시퀀스값의 다음 값을 반환한다.
- CURRVAL에 새로운 값이 할당되기 위해서는 NEXTVAL로 새로운 값을 생성해야 합니다.
- 즉, NEXTVAL로 새로운 값을 생성한 다음에 이 값을 CURRVAL에 대체하게 됩니다.
☞ NEXTVAL, CURRVAL을 사용할 수 있는 경우
-> 서브 쿼리가 아닌 SELECT 문
-> INSERT문의 SELECT 절
-> INSERT문의 VALUE 절
-> UPDATE문의 SET 절
☞ NEXTVAL, CURRVAL을 사용할 수 없는 경우
-> VIEW의 SELECT 절
-> DISTINCT 키워드가 있는 SELECT 문
-> GROUP BY, HAVING, ORDER BY 절이 있는 SELECT문
-> SELECT, DELETE, UPDATE의 서브 쿼리
-> CREATE TABLE, ALTER TABLE 명령의 DEFAULT 값
ex)
1. SELECT JONG_KYU.NEXTVAL FROM DUAL;
2. SELECT JONG_KYU.CURRVAL FROM DUAL:
'IT일반과목 > DataBase' 카테고리의 다른 글
데이터베이스 20180824 (학원11) (0) | 2018.08.24 |
---|---|
데이터베이스 20180823 (학원10) (0) | 2018.08.24 |
데이터베이스 (집공부8) (0) | 2018.08.22 |
데이터베이스 20180822 (학원9) 실습2 (0) | 2018.08.22 |
데이터베이스 20180822 (학원8) 실습1 (0) | 2018.08.22 |