핫돌의 잡 지식 놓는 곳

언젠가 사용할지도 모르는 JSP SQL시퀀스

핫돌 2024. 6. 26. 21:52
728x90
반응형

시퀀스(SEQUENCE)?

번호표 붙이기(인덱스)담당자

*인덱스는 순서를 의미한다.

레코드의 특정 컬럼에 대해 자동으로 인덱스를 부여할 수 있다.

*st_num을 사용해서 번호를 추가할 때 시퀀스를 사용해서 인덱스를 자동으로 부여할 수 있다.

NEXTVAL을 사용하여 다음 인덱스로 넘어간다.

*1에서 NEXTVAL을 사용하면 2로 바뀌고 다음은 3,4,5,6,...으로 바뀔 수 는 있지만 뒤로 갈 수 는 없다

한 번 넘어간 인덱스는 이전 인덱스로 돌아올 수 없다.

>>중복 인덱스가 부여되지 않으므로 값의 고유(UNIQUE)성질을 지킬 수 있다.

 

시퀀스 생성:CREATE SEQUENCE [시퀀스명][옵션1][옵션2]....;

*CREATE SEQUENCE st_seq;까지만 적어도 된다.

**아래 시퀀스 옵션 내용의 n은 숫자를 넣을 수 있는 것을 의미한다.

시퀀스 옵션:

1.START WITH n: n부터 시작하겠다.

*n에 숫자를 넣으면 넣은 숫자부터 시작

2.INCREMENT BY n: n씩 증가 시키겠다.(**음수면 감소) - DEFAULT1

*n의 숫자를 넣으면 그 숫자만큼 증가 마이너스 숫자를 넣으면 감소

**CREATE SEQUENCE seq START WITH 3 INCREMENT BY -1 3부터 시작해서 -1씩 감소하겠다.

3.MAXVALUE n :최댓값을 n으로 지정

*n100으로 지정하고 NEXTVAL을 진행하면 CYCLE을 추가했다면 1부터 다시 시작함.

*NOCYCLE 지정했다면 에러를 낸다.

NOMAXVALUE: 최댓값 없음 (무한대로 증가) - DAFAULT

4.MINVALUE n: 최솟값을 n으로 지정

NOMINVALUE: 최솟값 없음(무한대로 감소) - DEFAULT

5.CYCLE: 최댓값/최솟값 도달 시 순환하겠다.(다시 최솟값/최댓값부터 시작하겠다.)

NOCYCLE:순환하지 않음(도달하면 더 이상 NEXTVAL을 사용할 수 없음) -DEFAULT

6.CACHE: 미리 메모리에 생성해 두겠다 -DEFAULT 20

NOCACHE:생성해두지 않겠다.

 

시퀀스 생성:CREATE SEQUENCE [시퀀스명][옵션1][옵션2]....;

CREATE SEQUENCE seq START WITH 3 INCREMENT BY 2 MAXVALUE 9999 CYCLE NOCACHE;

CREATE SEQUENCE seq;을 수행하는 경우 적용되는 명령은 다음과 같다.(기본값)

CREATE SEQUENCE seq START WITH 1 INCREMENT BY 1 NOMAXVALUE NOCYCLE CACHE 20;

 

 

시퀀스 적용:(테이블 INSERT 수행 시 적용할 항목에)

INSERT INTO [테이블명] VALUES (..[시퀀스명].NEXTVAL,...);

INSERT INTO student VALUES (st_seq.NEXTVAL,'핫돌',‘010-1111-1111’,1, 89, SYSDATE);

INSERT INTO student VALUES (st_seq.NEXTVAL,‘핫도그’,‘010-2222-2222’,1, 100, SYSDATE);

INSERT INTO student VALUES (st_seq.NEXTVAL,‘핫돌2’,‘010-3333-3333’,3, 67, SYSDATE);

INSERT INTO student VALUES (st_seq.NEXTVAL,‘JSP’,'010-4444-4444',2, 83,

SYSDATE);

학번 학생이름 연락처 학년 점수 등록날짜
1 핫돌 010-1111-1111 1 89 2024/06/12
2 핫도그 010-2222-2222 1 100 2024/06/12
3 핫돌2 010-3333-3333 3 67 2024/06/12
4 JSP 010-4444-4444 2 83 2024/06/12

 

시퀀스 현재 값 조회:SELECT[시퀀스명].CURRVAL FROM DUAL;

SELECT st_seq.CURRVAL FROM DUAL;

, 한 번이라도 테이블 컬럼에 시퀀스 값이 추가 되어야한다.

현재 유저의 모든 시퀀스에 대한 모든 정보 조회:SELECT*FROM USER_SEQUENCES;

 

시퀀스 삭제:DROP[시퀀스명];

DROP st_seq;

시퀀스 생성:
CREATE  SEQUENCE st_seq START WITH 15
INCREMENT BY 1
MAXVALUE 9999 
NOCYCLE 
NOCACHE;

시퀀스 적용:

INSERT INTO student VALUES (st_seq.NEXTVAL,'논리회로',‘010-1123-1123’,3, 77, SYSDATE);

INSERT INTO student VALUES (st_seq.NEXTVAL,'물리학',‘010-5515-1155’,1, 81, SYSDATE);

시퀀스가 적용된 테이블.

 

 

 

************* 컴퓨터 공학부가 모두 잘 되는 날이 왔으면 좋겠습니다. *************

*************틀린 부분이 있다면 말씀해주신다면. 정정 하도록 노력겠습니다. *************

728x90
반응형