객체 종류
DICTIONARY 테이블
동의어 DCIT
1) 데이터베이스를 구상하고 운영하는 데 필요한 모든 정보를 저장하는 특수한 테이블
2) 데이터베이스가 생성되는 시점에 자동으로 만들어집니다.
1) USER_XXXX - 현재 데이터베이스에 접속한 사용자가 소유한 객체 정보
2) ALL_XXXX - 사용 가능한 모든 객체 정보, 현재 사용자가 접근 가능한 모든 정보
3) DBA_XXXX - 데이터베이스 관리를 위한 정보(데이터베이스 관리 권한을 가진 SYSTEM, SYS 사용자만 열람 가능)
4) V$_XXXX - 데이터베이스 성능 관련 정보(X$_XXXX 테이블의 뷰)
1) 데이터 사전은 오라클 데이터베이스를 구성하고 운영하는 데이터를 저장하는 특수한 테이블로서 오라클 사용자가 직접 접근할 수 없습니다.
2) SELECT문으로 데이터를 명령할 수 있도록 데이터 사전 뷰를 제공
3) 대표적인 데이터 사전 뷰 중 현재 접속한 사용자가 소유하는 테이블 목록을 보기 위해서는 USER_TABLES를 사용
4) 사용자가 소유하는 테이블을 포함해 다른 사용자가 소유한 테이블 중 현재 사용자에게 사용 허가가 되어 있는 테이블을 보기 위해서는 ALL_TABLES를 사용
4) SCOTT 계정이 소유한 인덱스 정보 알아보기(SCOTT 계정일 때)
5) SCOTT 계정이 소유한 인덱스 컬럼 정보 알아보기
6) 인덱스는 사용자가 직접 특정 테이블의 열에 지정할 수도 있지만 열이 기본키(primary key) 또는 고유키(unique key)일 경우에 자동으로 생성합니다.
index: 목차 -> 빠르게 찾기위한 물리적 주소
검색이 많이 되는 항목
정렬이 필요한 항목
-검색이 향상
조인을 많이 사용하는 컬럼
CREATE INDEX 인덱스명 ON 테이블명(컬럼명 [ASC|DESC], 컬럼명 ...);
DROP INDEX 인덱스명;
인덱스명 확인 : 사전테이블( USERINDEXES, USER_IN
참고)
1) 인덱스 생성이 항상 좋은 결과로 이어지지는 않습니다. 정확한 데이터 분석에 기반을 두지 않는 인덱스의 무분별한 생성은 오히려 성능을 떨어트리는 원인이 되기도 합니다.
2) 인덱스는 데이터 종류, 분포도, 조회하는 SQL의 구성, 데이터 조작 관련 SQL문의 작업 빈도, 검색 결과가 전체 데이터에서 차지하는 비중 등 많은 요소를 고려하여 생성합니다.
3) 선택도가 낮을 수록 인덱스 적용이 좋고 선택도가 높을 수록 인덱스는 불리하다
뷰의 사용 목적(편리성)
1) 편리성 : SELECT문의 복잡도를 완화하기 위해
2) 보안성 : 테이블의 특정 열을 노출하고 싶지 않을 경우
뷰 생성
CREATE VIEW 뷰 명칭 AS SELECT문;
1) 권한부여
CREATE [OR REPLACE] VIEW : 뷰가 없으면 생성하고, 있으면 교체
SYSTEM 계정
-> GRANT CREATE VIEW TO SCOTT;
2) 뷰 생성하기
USER_VIEWS 사전
3) 생성한 뷰 확인하기
USER_VIEWS 사전
4) 생성한 뷰 조회하기
5) 뷰 삭제
DROP VIEW 뷰이름;
인라인 뷰(서브쿼리 사용)
인라인 뷰(WITH절 사용
ROWNUM : 레코드 순번
1) 오라클 데이터베이스에서 특정 규칙에 맞는 연속 숫자를 생성하는 객체
1) 사용법
-권한 부여
CREATE SEQUENCE 권한 부여 필요
GRANT 권한 TO 사용자/스키마;
CREATE SEQUENCE 시퀀스이름
INCREMENT BY 숫자 //숫자씩 증가
START WITH 숫자 //숫자에서부터 증가 시작
MAXVALUE 숫자 //최대 숫자 만큼 증가
MINVALUE 숫자 //최소 숫자부터 시작
CYCLE(최대 숫자 도달시 다음 숫자는 MINVALUE 부터 시작) | NOCYCLE(기본 - 최대 숫자에 도달하면 오류 발생)
CACHE 숫자 - 기본값 (CACHE 20 -> 20개의 숫자를 미리 생성해 놓는다.) | NOCACHE
ALTER SEQUENCE 시퀀스이름
..
DROP SEQUENCE 시퀀스이름
2) DEPT 테이블을 사용하여 DEPT_SEQUENCE 테이블 생성하기
3) DEPT_SEQUENCE 테이블에 DEPTNO가 10씩 증가할 수 있는 시퀀스 생성
4) 시퀀스 생성을 확인
USER_SEQUENCES 사전 테이블
1) [시퀀스 이름.CURRVAL]과 [시퀀스 이름.NEXTVAL]을 사용
2) CURRVAL은 시퀀스에서 마지막으로 생성한 번호를 반환
3) NEXTVAL는 다음 번호를 생성
-> 시퀀스 객체.NEXTVAL -> 숫자 증가 -> 값 반환
사전 테이블 DICTIONARY의 동의어 DICT
CREATE SYNONYM : 현재 사용자에서만 동의어 사용 가능
CREATE PUBLIC SYNONYM : 모든 사용자에게 동의어 공유
GRANT CREATE PUBLIC SYNONYM, CREATE SYNONYM TO SCOTT;
CONN SCOTT/tiger //SCOTT 접속
CREATE SYNONYM 동의어 명칭 FOR 대상 테이블 또는 뷰;
DROP SYNONYM 동의어 명칭;