- SELECT문의 실행 결과(RESULT SET)를 저장하는 객체
- 논리적 가상 테이블
-> 테이블 모양을 하고는 있지만, 실제 값을 저장하고 있진 않다.
1) 복잡한 SELECT문을 쉽게 재사용하기 위해서 사용한다.
2) 테이블의 진짜 모습을 감출 수 있어 보안상 유리하다.
1) 가상의 테이블(실체 X)이기 때문에 ALTER 구문 사용이 불가능하다.
2) VIEW를 이용한 DML(INSERT, UPDATE, DELETE)가 가능한 경우도 있지만
제약이 많이 따르기 때문에 보통은 조회(SELECT) 용도로 많이 사용한다.
3) VIEW를 이용한 INSERT 시 원본 테이블에 삽입이 된다.
원본테이블 삽입 시 VIEW INSERT 구문에 미포함된 컬럼에는 NULL이 저장된다.
그런데 DEPT_TITLE 컬럼에 NOT NULL 제약조건이 설정되어 있다.
오류 발생! -> VIEW를 이용한 INSERT 실패
!! 결론 : VIEW에서 웬만하면 DML을 사용하지 말것!! !!
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW 뷰이름 [(alias[,alias]...] AS subquery
[WITH CHECK OPTION]
[WITH READ ONLY];
-> 기존에 동일한 뷰 이름이 존재하는 경우 덮어쓰고, 존재하지 않으면 새로 생성한다.
FORCE : 서브쿼리에 사용된 테이블이 존재하지 않아도 뷰 생성
NOFORCE : 서브쿼리에 사용된 테이블이 존재해야만 뷰 생성(기본값)
-> 옵션을 설정한 컬럼의 값을 수정 불가능하게 한다.
-> 뷰에 대해 조회만 가능(DML 수행 불가)
- 순차적 번호 자동 발생기 역할의 객체
EX) 1 2 3 4 5 6 7 8 9 .....
1) 시퀀스명.NEXTVAL : 다음 시퀀스 번호를 얻어온다. (INCREMENT BY 만큼 증가된 값)
단, 시퀀스 생성 후 첫 호출인 경우 START WITH의 값을 얻어온다.
2) 시퀀스명.CURRVAL : 현재 시퀀스 번호 얻어온다.
단, 시퀀스 생성 후 NEXTVAL 호출 없이 CURRVAL를 호출하면 오류 발생
CREATE SEQUENCE 시퀀스이름
[STRAT WITH 숫자] -- 처음 발생시킬 시작값 지정, 생략하면 자동 1이 기본
[INCREMENT BY 숫자] -- 다음 값에 대한 증가치, 생략하면 자동 1이 기본
[MAXVALUE 숫자 | NOMAXVALUE] -- 발생시킬 최대값 지정 (10의 27승, -1)
[MINVALUE 숫자 | NOMINVALUE] -- 최소값 지정 (-10의 26승)
[CYCLE | NOCYCLE] -- 값 순환 여부 지정
[CACHE 바이트크기 | NOCACHE] -- 캐쉬메모리 기본값은 20바이트, 최소값은 2바이트
ALTER SEQUENCE 시퀀스이름
[STRAT WITH 숫자] -- 처음 발생시킬 시작값 지정, 생략하면 자동 1이 기본
[INCREMENT BY 숫자] -- 다음 값에 대한 증가치, 생략하면 자동 1이 기본
[MAXVALUE 숫자 | NOMAXVALUE] -- 발생시킬 최대값 지정 (10의 27승, -1)
[MINVALUE 숫자 | NOMINVALUE] -- 최소값 지정 (-10의 26승)
[CYCLE | NOCYCLE] -- 값 순환 여부 지정
[CACHE 바이트크기 | NOCACHE] -- 캐쉬메모리 기본값은 20바이트, 최소값은 2바이트
- SQL 명령문 중 SELECT의 처리 속도를 향상 시키기 위해 컬럼에 대해서 생성하는 객체
- 인덱스 내부 구조는 B* 트리 형식으로 되어있다.
인덱스 장점
인덱스 단점
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명 (컬럼명, 컬럼명, ... | 함수명, 함수계산식);