미스터 역마살
오라클 오브젝트 종류 본문
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