[SQL] Day 6 - 시퀀스

윤수인·2023년 12월 21일
0

📒국비학원 [DB]

목록 보기
8/14
post-thumbnail

SEQUENCE

  • 데이터 저장됨 - 중복되지않는 고유번호를 사용하는것
  • ex) 12345에서 2가 빠지면 1234가 됨

    CREATE SEQUENCE DIV_DNO
    START WITH 1 --시작값 : (변경불가)
    INCREMENT BY 1 --1씩 증가값
    MINVALUE 1 --최솟값
    MAXVALUE 10 --최댓값
    NOCYCLE --반복하지않음 (/CYCLE)
    NOCACHE; -- 10개씩 메모리상에 올라감 (/CACHE)

시퀀스 사용

  • 시퀀스명.NEXTVAL
    :일련번호 생성함 / 증가된 값은 다시 내릴 수 없음 / 실행할때마다 값 올라감

  • 시퀀스명.CURRVAL
    :현재 시퀀스 순번을 가져올 수 있음 / NEXTVAL을 한번 실행한 세션에서만 사용가능

💻 작업

1. SEQUENCE

  • SEQUENCE

ROWNUM SQL

  • 12345에서 2가 빠지면 1345가 됨
SELECT ROWNUM, PNAME, PAY FROM PERSONNEL;

SEQUENCE SQL

CREATE SEQUENCE DIV_DNO 
START WITH 1
INCREMENT BY 1 --1씩 증가
MAXVALUE 10 --10까지
NOCYCLE --반복하지않음
NOCACHE; -- 10개씩 메모리상에 올라감 / NOCACHE

-- CURRVAL :  SEQUENCE의 현재 번호 (SEQUENCE의 이름.CURVAL)
-- NEXTVAL : SEQUENCE의 다음 번호 (SEQUENCE의 이름.NEXTVAL)


SELECT DIV_DNO.CURRVAL FROM DUAL; -- 발사한 총알 확인
SELECT DIV_DNO.NEXTVAL FROM DUAL; --발사한 횟수

SELECT * FROM USER_SEQUENCES;
  • INSERT 추가
INSERT INTO DIVISION (DNO,DNAME) VALUES (DIV_DNO.NEXTVAL,'AAA'); --3번 생성

SELECT * FROM DIVISION;

INSERT INTO DIVISION (DNO,DNAME) VALUES (DIV_DNO.NEXTVAL,'BBB'); --4번 생성
  • INSERT 수정
ALTER SEQUENCE DIV_DNO
MAXVALUE 999
CYCLE
CACHE 20; 

SELECT * FROM USER_SEQUENCES;

INSERT INTO PERSONNEL (PNO) VALUES (DIV_DNO.NEXTVAL); -- 다른 표적에 한발 쐈기때문에 

SELECT * FROM PERSONNEL;

INSERT INTO DIVISION (DNO,DNAME) VALUES (DIV_DNO.NEXTVAL,'CCC'); --갭이 생겨서 4번다음에 6번이 됨 (중복되지않는 고유값)
profile
어제보다 조금 더 성장하기!

0개의 댓글