미스터 역마살

오라클 오브젝트 종류 본문

Database/ORACLE

오라클 오브젝트 종류

Mr. YeokMaSsal 2016. 2. 21. 14:18
728x90
반응형


 






1. Table

  테이블이란 데이터가 저장되는 논리적 공간으로 열과 행을 가지며, 속해있는 테이블 스페이스 공간만큼 확장이 가능함


 ○ 테이블 이름 지정 규칙

 

  • 문자로 시작해야함
  • 최대 30자까지 지정 가능
  • A-Z, a-z, _ , $, # 등 사용가능
  • 동일 스키마 내에서는 유일한 명칭이어야 함
  • DBMS의 예약어는 사용할 수 없음
○ 데이터 타입
  


○ 테이블 생성/추가/수정/삭제
               <테이블 생성>


     
        < 테이블 컬럼 추가>


     
        <테이블 컬럼 수정>   



     
       < 테이블 컬럼 삭제>












2. View
 View란 물리적인 테이블을 근거로 한 논리적 가상 테이블의 역할을 하는 것을 말한다. 실제 물리적으로 데이터가 위치하는 것이 아니기 때문에 테이블이라고 부르기 보다는 뷰쿼리라고 부른다.


○ View의 특징
  • 뷰는 실제 데이터가 저장된 세그먼트가 아니므로 인덱스를 생설할 수 없다.
  • 실제 데이터가 저장되지는 않고 뷰의 정의만 저장되어 있다.
  • 데이터로의 접근을 제한한다
  • 복잡한 쿼리를 쉽게 만들어준다
  • 데이터의 독립성을 제공한다.
  • 특정기준에 따른 유저그룹의 데이터 접근을 제공한다.

○ Simple View
  • 하나의 테이블에서만 가져온다
  • DML(INSERT, UPDATE, DELETE) 기능을 수행 가능
  • 함수를 포함하고 있지 않다.

○ Complex View
  • 많은 테이블로부터 가져올 수 있다.
  • DML 기능을 수행 할 수 없다.
  • 함수를 포함하고 있다.

○ View에 DML 적용 시 주의사항
  • 그룹 함수 포함시 행을 삭제 할 수 없다.
  • GROUP BY 절 포함 시 삭제할 수 없다.
  • DISTINCT 키워드 포함 시 삭제 할 수 없다.




                                                          <View 생성>






                                                     <Alias 포함 View 생성>





                                                      <Complex View 생성>













3. SEQUENCE
 테이블 내의 유일한 숫자를 자동으로 생성시켜 주는 역할을 한다. 오라클에서 무결성을 위해 유일한 값을 가져야 할 경우 사용자의 부담을 덜어 낼 수 있다. 그리고 CREATE  권한을 가진 유저만이 시퀀스 구문을 만들 수 있다.

  • START WITH n : 시퀀스 번호의 시작을 지정
  • INCREMENT BY n : 연속적인 시퀀스 번호의 증가치를 지정
  • MAXVALUE n : 시퀀스의 최대값을 지정
  • MINVALUE n : 시퀀스의 최소값을 지정
  • CYCLE : 시퀀스 값이 최대값까지 증가되고 나면 START WITH 에서 지정한 시작값으로 시퀀스를 다시 시작함
  • CACHE n : 메모리 상에서 시퀀스 값을 관리하도록 하는 것으로 기본값은 20 (오라클이 사용 권장함) 

  • CURRVAL : 시퀀스의 현재값을 반환
  • NEXTVAL : 시퀀스의 다음값을 반환 (CURRVAL 이 한번은 실행되야 실행 할 수 있다)




                                        <시퀀스 생성>


       <시퀀스 사용 예>



○ CURRVAL & NEXTVAL이 사용가능한 경우와 가능하지 않은 경우
   
                       <CURRVAL & NEXTVAL이 사용가능한 경우와 가능하지 않은 경우>



○ 시퀀스 값의 gap이 생기는 경우
  • Rollback이 발생한 경우
  • 갑작스런 시스템 충돌
  • 다른 테이블에서 사용 되었을 경우
시퀀스 값의 gap을 줄일 수 있는 방법은 없다. 결국 수동으로 줄이는 수 밖에 없다. 또한 START WITH 는 변경할 수 없다.


         <시퀀스 수정>


 <시퀀스 삭제>












4. INDEX
테이블의 특정 데이터에 대한 접근을 빠르게 제공하기 위해 생성하는 객체이다. 유저가 생성만 하고 사용유지는 오라클이 다 알아서 한다. Primary key나 Unique 조건이 걸려있는 컬럼은 index가 자동으로 사용되고 있다. 그리고 CREATE TABLE 권한을 가지고 있는 유저가 사용할 수 잇다.




<인덱스 생성>





○ INDEX를 사용하면 좋은 컬럼
 1. WHERE 절에 있는 컬럼에 적용
    WHERE 절 자체가 조건을 주는 것이기 때문에 해당 컬럼들을 우선 Full scan 한 뒤에 조건절에 맞는 데이터를 또다시 검색하게 된다.     그러니 검색속도가 늦어질 수 밖에 없다. INDEX는 위에 검색순서 첫번째 캐쉬부분에서 검색을 하게 된다. 그러므로 속도가 향상된다.  

 2. ORDER BY 절에 있는 컬럼에 적용
   이 경우는 양면성을 가지고 있다. 데이터를 입력할때는 오히려 늦어지는 경향이 생기고 조회시에는 속도의 향상을 불러온다. 그래서 데   이터가 빈번하게 수정, 삭제되는 컬럼에서는 ORDER BY절에 인덱스를 사용하면 오히려 역효과가 발생하게 된다.

 3. JOIN 문이 자주 발생하는 컬럼에 적용  




○ INDEX를 사용하면 안되는 경우
  1. 조건문에 자주 사용되지 않는 컬럼
  2. 테이블의 크기가 작거나 결과가 테이블의 2 ~ 4%의 행만 출력 될 컬럼
  3. 테이블의 UPDATE가 자주될 때









5. SYNONYM
다른 유저의 오브젝트등에 시노님을 생성하면 자신의 오브젝트처럼 액세스가 가능하다. (단 필요한 오브젝트 권한 부여가 선행 되어야 함)



<SYNONYM 생성>




<SYNONYM 삭제>


728x90

'Database > ORACLE' 카테고리의 다른 글

오라클 11g 설치하기  (0) 2016.02.21
Orange 단축키  (0) 2016.02.21
오라클 SCOTT 계정 활성화하기  (0) 2016.02.21
DELETE, TRUNCATE, DROP의 차이점  (0) 2016.02.21
DECODE와 CASE  (0) 2016.02.21
Comments