Published 2022. 5. 31. 10:45
-- SCOTT 계정으로 시작
-- 데이터 사전 확인
SELECT * FROM DICT;
SELECT * FROM DICTIONARY;

SELECT TABLE_NAME FROM USER_TABLES;

-- 허가 받은 범위에서 다른 사용자의 테이블을 표시함
SELECT OWNER,TABLE_NAME FROM ALL_TABLES;

-- 오류나옴. SCOT은 권한이 없다. 데이터베이스 관리 권한 을 가진 사용자만 조회
-- SYSTEM 계정으로 로그인 후 확인
SELECT * FROM DBA_TABLES;
SELECT * FROM DBA_USERS WHERE USERNAME = 'SCOTT';
SELECT * FROM DBA_USERS;

--SCOTT 계정으로
SELECT * FROM USER_INDEXES;
SELECT * FROM USER_IND_COLUMNS;

CREATE TABLE EMP_TT AS SELECT * FROM EMP;
CREATE INDEX IDX_EMP_SAL ON EMP_TT(SAL);
SELECT * FROM USER_IND_COLUMNS WHERE INDEX_NAME = 'IDX_EMP_SAL';
DROP INDEX IDX_EMP_SAL;
SELECT * FROM USER_IND_COLUMNS WHERE INDEX_NAME = 'IDX_EMP_SAL';

CREATE TABLE DEPT_SEQUENCE AS SELECT * FROM DEPT WHERE 1<>1;
SELECT * FROM DEPT_SEQUENCE;

--시퀀스 타입을 만들기(아직 적용 안됨)
CREATE SEQUENCE SEQ_DEPT_SEQUENCE
    INCREMENT BY 10 -- 단계별 증가 값
    START WITH 10 -- 시작 값 기본 값
    MAXVALUE 90 -- 최대
    MINVALUE 0 -- 최소
    NOCYCLE -- 최대값이 되었을 때 처음부터 다시 사이클을 돌리지 않겠다. 더이상 추가 안됨.
    CACHE 2; -- 2개를 미리 만들어 놓겠다.
    
SELECT * FROM USER_SEQUENCES;

INSERT INTO DEPT_SEQUENCE(DEPTNO, DNAME, LOC) 
VALUES(SEQ_DEPT_SEQUENCE.NEXTVAL,'DATABASE','SEOUL'); -- 9번 반복 NOCYCLE 확인 

-- 최대값 90을 넘기면 오류가 뜬다
SELECT * FROM DEPT_SEQUENCE ORDER BY DEPTNO;

-- START WITH 값은 변경 불가능
ALTER SEQUENCE SEQ_DEPT_SEQUENCE
    INCREMENT BY 3
    MAXVALUE 99
    CYCLE;
    
SELECT * FROM USER_SEQUENCES;

-- CYCLE을 확인 99 넘기면 다시 0 부터 시작함.  같은 값 중복도 된다.
INSERT INTO  DEPT_SEQUENCE(DEPTNO, DNAME, LOC) 
VALUES(SEQ_DEPT_SEQUENCE.NEXTVAL,'DATABASE','SEOUL');

SELECT * FROM DEPT_SEQUENCE ORDER BY DEPTNO;

DROP SEQUENCE SEQ_DEPT_SEQUENCE;
복사했습니다!