yooniiverse
개발 블로그
yooniiverse
전체 방문자
오늘
어제
  • 분류 전체보기
    • 운영체제
    • 네트워크
    • ~2023.02
      • 외부교육
      • 대외활동
      • 스터디
      • 동아리
      • TIL
      • IT지식
      • 기타
      • 트러블 슈팅
      • 프로그래밍
      • Python
      • Java
      • JS
      • DB(SQL)
      • JSP
      • Spring
      • 기술면접
      • 자바
      • 코딩테스트
      • 자료구조
      • 알고리즘
      • 백준 문제풀이
      • 인공지능
      • 머신러닝
      • 프로젝트
      • 안드로이드 앱개발
      • 웹개발
      • 웹 서비스
      • 웹퍼블리싱
      • Node.js 백엔드 개발
      • CS
      • 1일 1CS지식
      • 운영체제
      • 네트워크
      • 데이터베이스
      • 정보처리기사
      • 도서 리뷰
      • 개발 관련 도서
      • 기타 도서

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yooniiverse

개발 블로그

~2023.02/DB(SQL)

시퀀스

2022. 4. 11. 20:30

-- 시퀀스

CREATE SEQUENCE DEPT_DEPTNO_SQ
INCREMENT BY 10
START WITH 10;

SELECT DEPT_DEPTNO_SQ.NEXTVAL FROM DUAL; -- 다음 값을 알아내기 위해
SELECT DEPT_DEPTNO_SQ.CURRVAL FROM DUAL; -- 시퀀스의 현재 값을 알아내기 위해

SELECT SEQUENCE_NAME, MIN_VALUE, MAX_VALUE,  INCREMENT_BY, CYCLE_FLAG
FROM USER_SEQUENCES;

SELECT * FROM DEPT_COPY;

INSERT INTO DEPT_COPY VALUES(50, 'TEST', 'TEST');

ALTER TABLE DEPT_COPY
ADD PRIMARY KEY(DEPTNO);

INSERT INTO DEPT_COPY VALUES(50, 'TEST', 'TEST'); -- unique constraint (SCOTT.SYS_C007042) violated

ROLLBACK;

INSERT INTO DEPT_COPY VALUES(DEPT_DEPTNO_SQ.NEXTVAL, 'TEST', 'TEST');


-- 예: 시퀀스를 테이블의 기본 키에 접목하기

CREATE SEQUENCE EMP_SEQ
START WITH 1
INCREMENT BY 1
MAXVALUE 100000;

DROP TABLE EMP01;

CREATE TABLE EMP01(
    EMPNO NUMBER(4) PRIMARY KEY,
    ENAME VARCHAR(10),
    HIREDATE DATE
);

INSERT INTO EMP01
VALUES(EMP_SEQ.NEXTVAL, 'JULIA', SYSDATE);

SELECT * FROM EMP01;


-- 시퀀스 삭제

SELECT SEQUENCE_NAME, MAX_VALUE, INCREMENT_BY, CYCLE_FLAG
FROM USER_SEQUENCES;

DROP SEQUENCE DEPT_DEPTNO_SQ;


-- 시퀀스 수정
-- 예: 시퀀스 최대값을 변경하기

CREATE SEQUENCE DEPT_DEPTNO_SEQ
START WITH 10
INCREMENT BY 10
MAXVALUE 30; -- 10부터 10씩 증가하면서 최대 30까지의 값을 갖는 시퀀스를 생성

SELECT DEPT_DEPTNO_SEQ.NEXTVAL FROM DUAL;

SELECT DEPT_DEPTNO_SEQ.NEXTVAL FROM DUAL;

SELECT DEPT_DEPTNO_SEQ.NEXTVAL FROM DUAL;

SELECT DEPT_DEPTNO_SEQ.NEXTVAL FROM DUAL; -- 부서 번호를 계속 생성하다 보면 최대값을 넘게 됨

ALTER SEQUENCE DEPT_DEPTNO_SEQ
MAXVALUE 100; -- 최대값을 넘을 때까지 시퀀스를 생성

SELECT SEQUENCE_NAME, MAX_VALUE, INCREMENT_BY, CYCLE_FLAG
FROM USER_SEQUENCES; -- USER_SEQUENCES 를 조회하면 시퀀스가 수정되었는지 확인할 수 있음

'~2023.02 > DB(SQL)' 카테고리의 다른 글

저장 프로시저와 저장 함수  (0) 2022.04.14
PL/SQL  (0) 2022.04.12
사용자 관리  (0) 2022.04.12
가상 테이블인 뷰  (0) 2022.04.11
데이터 무결성을 위한 제약 조건  (0) 2022.04.11
    '~2023.02/DB(SQL)' 카테고리의 다른 글
    • PL/SQL
    • 사용자 관리
    • 가상 테이블인 뷰
    • 데이터 무결성을 위한 제약 조건
    yooniiverse
    yooniiverse

    티스토리툴바