다른테이블이나 뷰에 포함된 데이터의 맞춤 표현
- STORED QUERY, VIRTUAL TABLE로 간주되는 데이터 베이스 객체
- 하나 이상의 테이블/뷰에 포함된 데이터 부분 집합을 나타내는 논리적인 객체
- 자체적으로 데이터를 포함하지 않는다.
- 베이스 테이블에 있는 데이터를 조건이나 조인등을 이용해서 참조하는 형식
생성 구문
CREATE [OR REPLACE][FORCE | NOFORCE] VIEW view_name [( alias [,,,,]]
AS
[WITH CHECK OPTION [CONSTRAINT constraint_name]]
[WITH READ ONLY [ CONSTRAINT constarint_name]]
제약조건
WITH READ ONLY
DML을 허용하지 않는다WITH CHECK OPTION
INSERT / UPDATE를 조건에따라서 실행하며 DELETE는 안된다.
데이터 조회 절차
VIEW를 사용한 SQL 구문 해석
데이터 딕셔너리 USER_VIEWS에서 뷰 정의 검색
SQL 구문을 실행한 계정이 관련된 베이스 테이블(원본)에 접근하여 SELECT 권한 확인
뷰 대신 원본 테이블을 기반으로 하는 동등한 작업으로 변환
베이스 테이블을 대상으로 데이터를 조회
뷰 삭제
DROP VIEW VIEW_NAME;
순차적으로 정수 값을 자동으로 생성하는 개체
SELECT SEQUENCE USER_NAME INCREMENT BY N : 시퀀스 번호 증가/감소 (DEFAULT 1) START WITH N : 시퀀스 시작 값 {MAXVALUE N | NOMAXVALUE } : 10의 27승을 기점으로 사용한다. {MINVALUE N | NOMINVALUE } : -10의 26승을 깃점으로 사용한다. [CYCLE | NOCYCLE } --> 최대/최소 값에 도달하면 반복여부를 결정한다 {CACHE N | NOCACHE } 지정한 수량 만큼 미리 메모리에 생성여부를 결정한다.
책의 목차와 같은 색인 역할을 한다.
- 키워드와 해당 내용의 위치가 정렬된 상태로 구성된다
- 키워드를 이용해서 내용을 빠르게 찾는 목적을 가진다.
- 데이터 베이스에서 인덱스는 컬럼값을 이용해서 원하는 행을 빠르게 찾기위한 목적.
DEPT 테이블에 DEPTNO가 있다라고 가정하자.
INDEX를 지정하지않을경우 -> 나열된 데이터의 데이터를 찾게된다
INDEX를 DEPTNO로 지정한경우 ->
생성
CREATE [UNOQUE] INDEX INDEX_NAME ON TABLE_NAME (COLUMN_LIST | FUNCTION, EXPR);-- EX CREATE UNIQUE INDEX IDX_DNM ON DEPARTMENT (DEPT_NAME); CREATE INDEX IDX_JID ON EMPLOYEE(JOB_ID);오라클은 PK 제약조건을 생성하면 자동으로 해당 컬럼에 Unique Index를 생성
USER_INDEXS -> 인덱스 정보를 가진 테이블
USER_IND_COLUMNS -> 인덱스가 지정된 컬럼의 정보
UPDATEUPDATE TABLE_NAME SET COLUMN_NAME=VALUE [, COLUMN_NAME=VAULE ,,,,] OR SUBQUERY, DEFALUT 옵션 [WHERE CONDITION]; --WHERE가 생략되면 전체 행이 갱신된다.
INSERT
DELETEDELETE FROM TABLE_NAME; TRUNCATE TABLE TABLE_NAME; --> 롤백이 불가능, 제약조건이 있는 테이블은 삭제가 불가능TRUNCATE TABLE 명령을 사용해서 전체 데이터를 삭제할 때는
- 참조되는 테이블의 제약조건을 DISABLE로 지정한다
- 전체 내용을 삭제한다
예시-- 1. 기존 제약 조건을 삭제한다 ALTER TABLE EMPLOYEE DROP CONSTRAINTS FK_MGRID; -- 2. 제약 조건을 추가하되 옵션을 지정한다. ALTER TABLE EMPLOYEE ADD CONSTRAINTS FK_MGRID FOREIGN KEY(MGR_ID) REFERENCES EMPLOYEE ON DELETE SET NULL; -- 3. 데이터를 삭제한다 DELETE FROM EMPLOYEE WHERE EMP_ID = '141'; -- 4. 확인 SELECT * FROM EMPLOYEE;