: 테이블을 기반으로 만들어지는 가상의 테이블
행검색 또는 객체 권한 설정을 간편하게 사용하기 위한 기능을 제공
단순뷰 생성시 그룹함수 또는 DISTINCT 키워드를 사용한 경우 검색만 가능
단순뷰는 DISTINCT 키워드 및 그룹함수 사용이 불가능하지만 복합뷰는 사용가능
CREATE [OR REPLACE] [{FORCE| NOFORCE}] VIEW 뷰이름 [ (컬럼명, 컬럼명,...) ] AS SELECT 검색대상, 검색대상,...
FROM 테이블명 [WHERE 조건식] [WITH CHECK OPTION] [WITH READ ONLY] ;
❕❕ 사용자가 뷰에 대한 시스템 권한이 없는데 뷰를 생성할 경우 에러 발생 >> 관리자(SYS)에게 뷰에 대한 시스템권한 요청
> 관리자 계정에서 아래 명령 실행
GRANT CREATE VIEW TO SCOTT;
시스템 관리자에게 뷰에 대한 시스템 권한을 부여 받은 후 뷰 관련 명령 사용 가능
EX) CREATE VIEW EMP_VIEW30 AS SELECT EMPNO,ENAME,DEPTNO FROM EMP_COPY WHERE DEPTNO=30;
==> 단순뷰 생성
SELECT * FROM VIEW NAME;
- 단순뷰에 행 삽입 : 테이블에 행을 삽입 처리 - 뷰에 없는 컬럼에는 컬럼 기본값이 전달되어 삽입
- 복합뷰
> EX) CREATE VIEW EMP_VIEW AS SELECT EMPNO, ENAME, SAL, DNAME, LOC FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
DROP VIEW 뷰이름;
> 테이블을 삭제해도 테이블을 기반으로 생성된 뷰 미삭제
> 뷰가 참조할 수 있는 테이블이 없는 경우 에러 발생
> 테이블 또는 뷰의 모든 컬럼을 다른 검색대상과 같이 사용할 경우 테이블명 테이블명.* 또는 [뷰.*] 형식으로 표현하여 검색가능
EX) SELECT ROWNUM,EMP_VIEW.* FROM EMP_VIEW;
> WHERE의 조건식에서 사용할때 > 또는 >= 또는 = 연산자를 이용한 연산식 사용 불가능
SELECT 명령에서 FROM의 서브쿼리를 사용하여 일시적으로 생성되어 사용되는 뷰
- 뷰 관련 시스템 권한이 없어도 인라인 뷰를 생성하여 사용가능 형식) SELECT 검색대상,... FROM (SELECT 검색대상,... FROM 테이블명 [WHERE 조건식])
- ROWNUM 키워드SMS 인라인 뷰의 검색행에 순차적으로 부여되는 행번호로 처리행 전에 행번호를 미리 부여받지 못해 비교 검색 불가능
- ROWNUM 키워드를 포함한 인라인 뷰를 생성하고 ROWNUM 키워드에 컬럼 별칭을 설정하여 조건식에 사용하여 검색 가능
- WHERE의 조건식에서 사용할때 > 또는 >= 또는 = 연산자를 이용한 연산식 사용 불가능
⭐ 페이징 처리 : 하나의 웹 페이지에 원하는 범위의 행만 검색하여 출력하는 기능
EX) SELECT * FROM (SELECT ROWNUM RN,TEMP.* FROM (SELECT EMPNO,ENAME,SAL FROM EMP ORDER BY SAL DESC) TEMP) WHERE RN=10;
: 숫자값(정수값)을 저장하여 자동 증가되는 값을 제공하는 객체
CREATE SEQUENCE 시퀀스명 [START WITH 초기값] [INCREMENT BY 증가값] [MAXVALUE 최대값] [MINVALUE 최소값] [CYCLE] [CACHE 갯수]
EX) SELECT SEQUENCE_NAME, MAX_VALUE,MIN_VALUE, INCREMENT_BY FROM USER_SEQUENCES;
형식) 시퀀스명.NEXTVAL
SELECT USER2.SEQ.NEXTVAL FROM DUAL;
ALTER SEQUENCE 시퀀스명 { MAXVALUE | MINVALUE | INCREMENT BY } 변경값
DROP SEQUENCE 시퀀스명
테이블에 저장된 행을 보다 빠르게 검색하기 위한 기능을 제공하는 객체
- 컬럼에 인덱스를 설정하면 익덱스 영역을 생성하여 컬럼에 대한 행 검색 속도 증가
- 조건식에서 많이 사용하는 컬럼에 설정하며 행이 많을 때 설정하는 것이 효율적
- 유니크 인덱스(UNIQUE INDEX) : PRIMARY KEY 제약조건이나 UNIQUE 제약조건에 의해 자동으로 생성되는 인덱스
- 비유니크 인덱스(NONUNIQUE INDEX) : 사용자가 컬럼을 이용하여 수동으로 생성하는 인덱스
USER_INDEXES : 인덱스 정보를 제공하는 딕셔너리
USER_IND_COLUMNS : 컬럼 인덱스 정보를 제공하는 딕셔너리EX) SELECT C.INDEX_NAME,COLUMN_NAME, UNIQUENESS FROM USER_INDEXES I JOIN USER_IND_COLUMNS C ON I.INDEX_NAME=C.INDEX_NAME WHERE C.TABLE_NAME='USER3';
CREATE INDEX 인덱스명 ON 테이블명(COLUMN명);
DROP INDEX 인덱스명
> 유니크 인덱스는 PRIMARY 제약조건이나 UNIQUE 제약조건을 삭제하면 같이 삭제
오라클 객체를 다른 이름으로 설정하여 사용하기 위한 객체
- 전용 동의어 : 특정 사용자만 사용할 수 있는 동의어 - 일반 사용자에 의해 관리
- 공용 동의어 : 모든 사용자가 사용할 수 있는 동의어 - 관리자에 의해 관리
CREATE [PUBLIC] SYNONYM 동의어 FOR 객체명
> PUBLIC : 공용 동의어를 생성하기 위한 키워드
사용자명.테이블명 또는 사용자명.뷰이름
SELECT TABLE_NAME FROM SYS.USER_TABLES;
SELECT TABLE_NAME FROM TABS
GRANT CREATE SYNONYM TO SCOTT;
시스템 관리자에게 동의어에 대한 시스템 권한을 부여 받은 후 동의어 관련 명령 사용 가능
CREATE SYNONYM BONUS FOR COMM(TABLE NAME) ;
USER_SYNONYMS : 동의어 관련 정보를 제공하는 딕셔너리
SELECT TABLE_NAME, SYNONYM_NAME, TABLE_OWNER FROM USER_SYNONYMS WHERE TABLE_NAME ='COMM'
DROP [PUBLIC] SYNONYM 동의어