ALL_로 시작하는 데이터사전이다. 한 특정사용자가 조회가능한 모든 데이터 사전을 의미
자신이 조회하려는 객체의 주인이 아니더라도 그 객체에 접근 할 수 있는 권한을 가지고 있다면 ALL_XXX 뷰를 통하여 조회가 가능하다.
USER_XXX 로시작하는 데이터사전이다. 한 특정 사용자에게 종속되어 있고, 그사용자가 조회 가능한 데이터 사전 뷰들로 ALL_XXX데이터사전의 모든 정보의 부분집합이다.
DBA권한을 가진 사용자 만이 조회할 수 있는 데이터 사전으로서 모든 오라클 데이터베이스 객체에 대한 정보를 볼 수있다.
SELECT ANY TABLE권한이 있는 사용자 또한 질의가 가능하며 다른 사용자가 질의 하려면 앞에 SYS라는 접두어를 붙여야함
Dynamic Performance View라고도 하고 현재 Database의 상태에 관한 정보로 주로 DBA에게만 액세스가 허용
주로 DBA의 모니터링 작업용 정보를 제공, X$테이블을 베이스로 하는 뷰이다.
X뷰가 보여주지 않는 정보를 보여준다.
X$ 테이블은 오라클의 메모리 정보를 볼 수 있는 SQL 인터페이스 뷰들로 Oracle 데이터베이스의 가장 숨겨진 영역중하나이다.
인덱스는 테이블이나 클러스터에 쓰여지는 선택적인 객체이다.
오라클 인덱스는 B-tree(binary search tree)에 대한 원리를 기반으로 하고 있다.
B-tree 인덱스는 컬럼안에 독특한 데이터가 많을 떄 가장 좋은 효과를 가진다.
이 알고리즘의 원리는
1. 주어진 값을 리스트의 중간점에 있는 값과 비교함. 만약 그값이 더크면 리스트의 아래쪽 반을 버린다 만약 그값이 더 작다면 위쪽 반을 버린다.
2. 하나의 값이 발견될때까지 또는 리스트가 끝날때 까지 그와 같은 작업을 다른 반쪽에도 반복한다.
비트맵 인덱스는 각 컬럼에 대해 적은 개수의 독특한값이 있을 경우 사용하는 것이 좋다.
비트맵 인덱스는 B-tree인덱스가 사용되지 않을 경우에서 성능을 향상시킴
테이블이 매우 크거나 수정/변경이 잘일어나지 않는 경우에 사용할 수 있다.
SQL> CREATE BITMAP INDEX emp_deptno_index
ON emp(deptno);
UNIQUE 인덱스는 인덱스를 사용한 컬럼의 중복값들을 포함하지 않고 사용할 수 있다는 장점이 있다.
프라이머리키 와 UNIQUE제약 조건시 생성되는 인덱스는 UNIQUE 인덱스이다.
SQL> CREATE UNIQUE INDEX emp_ename_indx
ON emp (ename);
NON-UNIQUE인덱스는 인덱스를 사용한 컬럼에 중복 데이터 값을 가질수ㅇ ㅣㅆ다.
SQL> CREATE INDEX dept_dname_indx
ON dept(dname);
복수개의 컬럼에 생성할 수 있으며 복수키 인덱스가 가질수있는 최대 컬럼값은 16개이다.
SQL> CREATE UNIQUE INDEX emp_empno_ename_indx
ON emp(empno, ename);
인덱스의 구조는 테이블과 독립적이므로 인덱스의 삭제는 테이블의 데이터에는 아무런 영향도 미치지 않는다
인덱스를 삭제하려면 인덱스의 소유자가 OR DROP ANY INDEX권한을 가지고 있어야함
인덱스는 ALTER할 수없다.
SQL> DROP INDEX emp_empno_ename_idx;
인덱스에 대한 정보는 USER_INDEXES 뷰 또는 USER_IND_COLUMNS뷰를 통해 검색할 수있다.
SQL> SELECT index_name, indext_type
FROM USER_INDEXES
WHERE table_name ='EMP';
INDEX_NAME INDEX_TYPE
------------- ---------------
EMP_DEPTNO_INDX BITMAP
EMP_PK_EMPNO NORMAL
SQL> CREATE OR REPLACE VIEW name_query
AS
SELECT a.ename,b.dname
FROM emp a, dept b
WHERE a.deptno=b.deptno
AND b.deptno=20;
---뷰를 이용한 조회
SQL> SELECT * FROM name_query;
ENAME DNAME
-------- -------------
SMITH RESEARCH
JONES RESEARCH
...
뷰의 조건식을 만족하는 데이터만 INSERT또는 UPDATE가 가능하도록 하는 옵션
SQL> CREATE OR REPLACE VIEW check_option
AS
SELECT empno, ename, deptno
FROM emp
WHERE deptno = 10
WITH CHECK OPTION;
---부서 번호가 10인 사원만 INSERT,UPDATE할 수 있다.
SQL> INSERT INTO check_option(empno, ename, deptno)
VALUES(10005, 'jain' , 30);
=============결과_====================
INSERT INTO check_option(empno, ename, deptno)
1행에 오류:
ORA-01402: 뷰의 WITH CHECK OPTION의 조건에 위배 됩니다
SELECT만 가능한 VIEW를 생성함
---아래의 뷰는 읽기만 가능함
SQL> CREATE OR REPLACE VIEW read_only
AS
SELECT empno, ename, deptno
FROM emp
WHERE detpno = 10
WITH READ ONLY;
USER_VIEWS데이터 사전을 통해서 뷰에 대한 정보를 조회할 수 있따.
SQL> SELECT view_name, text
FROM USER_VIEWS;
---시퀀스 생성 Syntax
CREATE SEQUENCE sequence_name
[START WITH n]
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE | NOCACHE]