시퀀스(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으로 지정
*n을 100으로 지정하고 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);
시퀀스가 적용된 테이블.
************* 컴퓨터 공학부가 모두 잘 되는 날이 왔으면 좋겠습니다. *************
*************틀린 부분이 있다면 말씀해주신다면. 정정 하도록 노력겠습니다. *************
'핫돌의 잡 지식 놓는 곳' 카테고리의 다른 글
언젠가 사용할지도 모르는 JSP JDK,이클립스 다운받기. (0) | 2024.06.26 |
---|---|
언젠가 사용할지도 모르는 JSP 테이블 만들기. (0) | 2024.06.26 |
언젠가 사용할지도 모르는 JSP SQL 조건, 함수, 정렬 (0) | 2024.06.26 |
언젠가 사용할지도 모르는 JSP SQL CRUD생성,조회,수정,삭제 (0) | 2024.06.26 |
언젠가 사용할지도 모르는 JSP DBA주요 명령 (2) | 2024.06.26 |