테이블 모양을 하고는 있지만, 실제로 값을 저장하고 있지는 않음
1) 복잡한 SELECT문을 쉽게 재사용하기 위해서 사용
2) 테이블의 진짜 모습을 감출 수 있어 보안상 유리함
1) 가상 테이블 (실제 테이블 X) --> ALTER 구문 사용 불가
2) VIEW를 이용한 DML(INSERT / UPDATE / DELETE)이 가능한 경우도 있지만
많은 제약이 따르기 때문에 SELECT 용도로 사용하는 것을 권장.
[VIEW 생성 방법]
CREATE [OR REPLACE][FORCE | NOFORCE] VIEW 뷰이름
AS SUBQUERY(만들고 싶은 뷰 모양의 SUBQUERY)
[WITH CHECK OPTION][WITH READ ONLY];
1) OR REPLACE : 기존에 동일한 뷰이름이 존재하는 경우 덮어쓰고, 존재하지 않으면 새로 생성
2) FORCE | NOFORCE
FORCE : 서브쿼리에 사용된 테이블이 존재하지 않아도 뷰 생성
NOFORCE : 서브쿼리에 사용된 테이블이 존재해야만 뷰 생성 (기본값)
3) WITH CHECK OPTION : 옵션을 설정한 컬럼의 값을 수정 불가능하게 함.
4) WITH READ ONLY : 뷰에 대한 조회만 가능 (DML 수행 불가)
SEQUENCE는 주로 PK 역할의 컬럼에 삽입되는 값을 만드는 용도로 사용
[작성법]
CREATE SEQUENCE 시퀀스 이름
[START WITH 숫자] -- 처음 발생시킬 시작값 지정, 생략하면 자동 1이 기본
[INCREMENT BY 숫자] -- 다음 값에 대한 증가치, 생략하면 자동 1이 기본
[MAXVALUE 숫자 | NOMAXVALUE] -- 발생시킬 최대값 지정 (10의 27승 -1)
[MINVALUE 숫자 | NOMINVALUE] -- 최소값 지정 ( -10의 26승 )
[CYCLE | NOCYCLE] -- 값 순환 여부 지정
[CASHE 바이트 크기 | NOCACHE] -- 캐시메모리 기본값은 20바이트, 최소값은 2바이트
시퀀스 사용 방법
1) 시퀀스명.NEXTVAL : 다음 시퀀스 번호를 얻어옴. ( INCREMENT BY만큼 증가된 값 )
단, 시퀀스 생성 후 첫 호출인 경우 START WITH의 값을 얻어옴.
2) 시퀀스명.CURRVAL : 현재 시퀀스 번호 얻어옴.
단, 시퀀스 생성 후 NEXTVAL 호출 없이 CURRVAL를 호출하면 오류 발생.
옵션 없이 SEQUENCE 생성
범위 : 1 ~ 최대값
시작 : 1
반복 X (NOCYCLE)
캐시메모리 20BYTE (기본값)
ALTER SEQUENCE 시퀀스 이름
[INCREMENT BY 숫자] -- 다음 값에 대한 증가치, 생략하면 자동 1이 기본
[MAXVALUE 숫자 | NOMAXVALUE] -- 발생시킬 최대값 지정 (10의 27승 -1)
[MINVALUE 숫자 | NOMINVALUE] -- 최소값 지정 ( -10의 26승 )
[CYCLE | NOCYCLE] -- 값 순환 여부 지정
[CASHE 바이트 크기 | NOCACHE] -- 캐시메모리 기본값은 20바이트, 최소값은 2바이트
인덱스 생성 방법
[작성법]
CREATE INDEX 인덱스명
ON 테이블명 (컬럼명, 컬럼명, ...)
➡️ PK 또는 UNIQUE 제약조건이 설정되는 경우
WHERE 절에 인덱스가 지정된 컬럼을 언급하면 된다.