-- 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;