객체는 총 7가지 종류로 데이터 보관 및 관리를 위한 여러 기능과 저장공간을 객체를 통해 제공한다.
우리는 여기서 자주 쓰이는 인덱스, 뷰, 시퀀스, 동의어를 살펴보자
- 검색의 효율성을 증대시키기 위한 객체
- 데이터베이스 서버의 성능을 결정하는 요소 중 하나
- 데이터 검색, 삽입, 변경 시 해당 자료의 선택의 효율성을 위해 사용
검색,삽입,변경에도 항상 WHERE로 인해 행을 찾아야 하는 일이 생기기 때문
- 별도의 저장공간 및 처리 프로세서 필요
- 찾고자 할 때 같이 저장한 인덱스를 사용하여 검색의 효율을 높인다
- 인덱스객체 생성
CREATE INDEX 인덱스명 ON 테이블명(컬럼명) -- 기본 생성 시 NON-UNIQUE INDEX로 생성되어 중복값을 허용한다. -- 중복값을 허용하지 않고 싶다면 CREATE UNIQUE 인덱스명...
- 인덱스객체 제거
DROP INDEX 인덱스명; -- 객체이므로 DROP로 제거한다.
- 인덱스객체 재구성
ALTER INDEX 인덱스명 REBUILD; -- 데이터베이스 테이블이 다른 저장공간으로 이동되거나 -- 원본테이블 자료의 입출력이 빈번히 발생한 직후 인덱스 재구성이 필요
- 테이블과 유사한 객체
- SELECT문의 실행결과의 집합(가상 테이블)
- 필요한 정보가 여러 테이블에 분산되어 Query 작성에 방해되는 경우
- 특정 자료에 접근은 제한하고 결과만 제공하고자 하는 경우(보안)
- 뷰 객체 생성
CREATE VIEW 뷰이름 (컬럼명1, 컬럼명2) AS SELECT ~~~ FROM ~~ WHERE ~~~; - 생성의 부가요소 1. REPLACE : 이미 같은 이름의 뷰가 있다면 대치시킨다. 2. FORCE : 기준 테이블이 없어도 뷰 생성 3. WITH READ ONLY : 읽기전용 -> 삽입, 삭제, 갱신이 적용되지 않는다.
- 자동으로 증가(감소)되는 숫자를 생성
- 일부 다른 DBMS에선 AUTO INCREMENT로 구현되어 있다.
- 오라클에선 테이블과 독립된 객체
- 시퀀스 객체 생성
CREATE SEQUENCE 시퀀스명 -아래는 선택 사항 START WITH n - 시작값 INCREMENT BY n - 증감값 MAXVALUE n - 최대값 MINVALUE n - 최소값 CYCLE/NOCYCLE - 반복 여부
테이블과 독립적으로 운영되는 객체이기 때문에
테이블에서 값이 삭제되더라도 시작하는 값은 같다.
ex) 13까지 증가된 시퀀스를 그대로 아무 자료 없는 테이블에서 사용 시 첫번째 값은 13부터 시작
- 오라클 객체들에 부여된 또 다른 이름으로 보면된다.
- 테이블 별칭은 SQL문에서만 유효하지만 동의어는 언제나 사용 가능
- 다른 소유자의 객체에 접근하거나 긴 객체명을 사용시 유용하다.
즉 우린 다른 계정의 테이블에 접근하려면 접속계정을 변환하거나 [계정명.테이블명]을 사용해서 접근해 왔지만 동의어를 사용함으로 귀차니즘인 우린 귀찮음에서 벗어날 수 있다.
- 동의어 객체 생성
CREATE SYNONYM 동의어 FOR 객체명;
-- '동의어' : '객체명에 부여할 별칭'
-- '객체명' : 별칭을 부여할 테이블명ex) SOOBO 계정의 JAVA 테이블에 대해 별칭을 지어주려면
CREATE SYNONYM 'soja' FOR SOOBO.JAVA