-
시퀀스 SEQUENCE프로그래밍/DBMS 2021. 8. 18.반응형
SEQUENCE
유일한 정수 값을 연속적으로 생성
시퀀스 번호는 커밋 또는 롤백과 상관없이 증가
시퀀스 생성
CREATE SEQUENCE test_seq1 INCREMENT BY 1 START WITH 1 NOMAXVLAUE NOCYCLE NOCACHE; -- 1부터 1씩 증가하는 시퀀스
INCREMENT BY = 몇씩 증가하나?
START WITH = 몇 부터 시작하나?
NOMAXVLAUE = MAX값 지정 안함
NOCYCLE = 반복 안함
NOCACHE = 캐시 없음
시퀀스 확인 하기
SELECT * FROM user_sequences; SELECT * FROM seq;
만든 시퀀스로 시퀀스 값 가져오기
SELECT test_seq1.NEXTVAL FROM dual; -- 1 SELECT test_seq1.NEXTVAL FROM dual; -- 2 SELECT test_seq1.NEXTVAL FROM dual; -- 3
1부터 1씩 증가하게 설정 했었으니까 그대로 실행이 된다.
현재 시퀀스 값 확인하기
SELECT test_seq1.CURRVAL FROM dual; -- 3
아까 NEXTVAL로 3까지 갔었으니까 현재 값을 확인 해보면 3이 나온다.
시퀀스 삭제하기
DROP SEQUENCE test_seq1; SELECT * FROM seq;
시퀀스 이용 해보기
CREATE TABLE bbs ( num NUMBER PRIMARY KEY, name VARCHAR2(30) NOT NULL, subject VARCHAR2(500) NOT NULL, content VARCHAR2(4000) NOT NULL, reg_date DATE DEFAULT SYSDATE, hitCount NUMBER DEFAULT 9 );
테이블 bbs 만들고
CREATE SEQUENCE bbs_seq INCREMENT BY 1 START WITH 1 NOMAXVLAUE NOCYCLE NOCACHE;
시퀀스 하나 생성
INSERT INTO bbs(num, name, subject, content, reg_date, hitCount) VALUES (bbs_seq.NEXTVAL, '가나다', '테스트', '테스트입니다', SYSDATE, 0); INSERT INTO bbs(num, name, subject, content, reg_date, hitCount) VALUES (bbs_seq.NEXTVAL, '도도도', '테스트2', '테스트입니다3', SYSDATE, 0); INSERT INTO bbs(num, name, subject, content, reg_date, hitCount) VALUES (bbs_seq.NEXTVAL, '파파파', '테스트3', '테스트입니다3', SYSDATE, 0);
값을 넣을때 시퀀스를 이용해서 값을 넣는다.
시퀀스 예제 (종류 포함)
-- 100~200까지 부터 2씩 증가하는 시퀀스. 캐시 5개. 200 넘어가면 오류 CREATE SEQUENCE test_seq2 INCREMENT BY 2 START WITH 100 MINVALUE 100 MAXVALUE 200 CACHE 5;
-- 20까지 10부터 3씩 증가하는 시퀀스. 캐시 3개, 최소 1, 최대값 도달하면 처음부터 다시 -- CYCLE 옵션이 있는 경우 명시적으로 CACHE를 지정하거나 NOCACHE로 설정 해야 함 -- 10 13 16 19 1 4 ... CREATE SEQUENCE test_seq3 INCREMENT BY 3 START WITH 10 MINVALUE 1 MAXVALUE 20 CYCLE CACHE 3;
반응형'프로그래밍 > DBMS' 카테고리의 다른 글
고급 쿼리 / 정규식 (0) 2021.08.18 고급 쿼리 / 계층적 쿼리 / PIVOT (0) 2021.08.18 VIEW(뷰), SYNONYM(시노님) (0) 2021.08.17 서브쿼리 Subquery (0) 2021.08.16 JOIN (INNER JOIN / OUTER JOIN) (0) 2021.08.13