■ VIEW
- SELECT문을 저장할 수 있는 객체 (논리적인 가상 테이블)
- 테이블에 대한 SQL만 저장되어 있음 (데이터 저장 X)
- VIEW 이용해 DML(SELECT, INSERT, UPDATE, DELETE 등) 사용
1. DML 구문으로 VIEW 조작 불가능한 경우
1) 뷰 정의에 포함되지 않는 컬럼 조작
2) 뷰에 포함되지 않은 컬럼 중 베이스가 되는 컬럼이 NOT NULL 제약조건 지정
3) 산술 표현식으로 정의
4) 그룹 함수, GROUP BY절 포함
5) DISTINCT 포함
6) JOIN으로 여러 테이블 연결함
2. VIEW 옵션
1) OR REPLACE : 기존 동일한 이름의 뷰가 있을 경우 덮어쓰고, 없으면 뷰 생성
2) FORCE : 서브 쿼리에 작성된 테이블이 존재하지 않아도 뷰 생성됨
3) NOFORCE : 서브 쿼리에 작성된 테이블이 존재해야 뷰 생성됨
4) WITH CHECK OPTION : 서브 쿼리 조건에 맞지 않는 값으로 수정할 경우 오류 발생
5) WITH READ ONLY : 뷰 조회만 가능(DML 불가)
3. VIEW 삭제
DROP VIEW V_DEPT;
■ SEQUENCE
- 순차적으로 정수 값 자동 생성
- NEXTVAL를 한 번이라도 수행하지 않으면 CURRVAL를 가져올 수 없음
1. SEQUENCE 생성
-- 시퀀스 생성
CREATE SEQUENCE SEQ_EMPNO
START WITH 300 -- 시작 값
INCREMENT BY 5 -- 증가 값
MAXVALUE 310 -- 최대 값
NOCYCLE -- 값 순환 여부
NOCACHE; -- 캐시메모리 사용 여부
-- 현 계정 시퀀스 조회하는 데이터 딕셔너리
SELECT * FROM USER_SEQUENCES;
-- NEXTVAL 수행하지 않아 CURRVAL 가져올 수 없음
SELECT SEQ_EMPNO.CURRVAL FROM DUAL;
SELECT SEQ_EMPNO.NEXTVAL FROM DUAL; -- 300
SELECT SEQ_EMPNO.CURRVAL FROM DUAL; -- 300
SELECT SEQ_EMPNO.NEXTVAL FROM DUAL; -- 305
SELECT SEQ_EMPNO.NEXTVAL FROM DUAL; -- 310
SELECT SEQ_EMPNO.NEXTVAL FROM DUAL; -- 에러 (MAXVALUE 값을 초과)
2. SEQUENCE 수정
- START WITH 값 변경은 불가(삭제 후 새로 만들어야 함)
ALTER SEQUENCE SEQ_EMPNO
-- START WITH 200; -- ERROR
INCREMENT BY 10
MAXVALUE 400;
3. SEQUENCE 삭제
DROP SEQUENCE SEQ_EMPNO;
■ INDEX
- 행들 위치 정보 가지고 있음
- 검색 속도 및 시스템 전체 성능 향상
1. 인덱스 종류
1) 비고유 인덱스
- 중복 데이터를 인덱스 키값으로 지정
- 자주 사용하는 컬럼 대상으로 성능 향상 목적으로 생성
2) 결합 인덱스
- 컬럼 2개 이상, 인덱스 1개
- 순서에 의해 성능 차이 발생
-- 인덱스 생성
CREATE INDEX IDX_DEPTCODE
ON EMPLOYEE(DEPT_CODE);
--인덱스 삭제
DROP INDEX 인덱스명;
'국비과정 > Oracle' 카테고리의 다른 글
| 국비 40일차 - [PL/SQL, OBJECT] PL/SQL 반복문 및 예외처리문, PROCEDURE, FUNCTION (0) | 2022.05.23 |
|---|---|
| 국비 39일차 - [OBJECT, PL/SQL] SYNONYM, PL/SQL 선언부 및 실행부(선택문) (0) | 2022.05.22 |
| 국비 37일차 - [평가] SQL활용 (0) | 2022.05.18 |
| 국비 36일차 - [TCL, DCL, VIEW] COMMIT, ROLLBACK, GREANT, REVOKE, VIEW (0) | 2022.05.17 |
| 국비 35일차 - [DDL, DML] ALTER(컬럼 삭제, 이름 변경), DROP, INSERT, UPDATE, TRUNCATE (0) | 2022.05.17 |
댓글