21.9.2

Inabang·2021년 9월 2일

PlayData

목록 보기
25/34

Day27

View

다른테이블이나 뷰에 포함된 데이터의 맞춤 표현

  • 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 } : 1027승을 기점으로 사용한다.
{MINVALUE N | NOMINVALUE } : -1026승을 깃점으로 사용한다.
[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 -> 인덱스가 지정된 컬럼의 정보

DML(Data Manipulation Language)

UPDATE

UPDATE TABLE_NAME
SET COLUMN_NAME=VALUE [, COLUMN_NAME=VAULE ,,,,] 
OR SUBQUERY, DEFALUT 옵션 
[WHERE CONDITION];
--WHERE가 생략되면 전체 행이 갱신된다.

INSERT

DELETE

DELETE 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;

0개의 댓글