ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [4회차-①] ORACLE (시퀀스, 뷰, DCL)
    ORACLE 2021. 5. 2. 21:27

    강의명 : 오픈프레임워크 활용 디지털융합 SW엔지니어 양성 과정

    강의 날짜 : 21.04.29

     

     

    <시퀀스>

     

    임시로 테이블을 생성하자.

    이 테이블은 은행과 같은 역할이라고 생각하자.

     

     

     

    1. 시퀀스 생성

     

    CREATE SEQUENCE 시퀀스명 NOCACHE;

     

    CREATE SEQUENCE 시퀀스명
      START WITH 10 (초기값)
      INCREMENT BY 10 (증가값)
      MAXVALUE 30 (최대값)
      NOCACHE;

     

     

    시퀀스는 순번 발급기, 번호 발급기와 같은 역할을 한다고 생각할 수 있다.

     

     

     

    2. 번호 발급

     

    데이터베이스의 인덱스는 1부터이므로 시퀀스도 1부터 값을 준다.

     

    시퀀스는 대기 상태를 유지하다가 데이터가 INSERT되면 순번이 발급된다.

    시퀀스 값을 받을 컬럼은 반드시 PRIMARY KEY로 지정이 되어있어야 한다.

     

    이때, 시퀀스는 유일한 값이어야 한다. 즉, UNIQUE의 속성을 가지고 있는 것이다.

     

    * 오류가 뜬 경우

    11g 초기까지만 해도 오류가 떠도 NEXTVAL을 무시하지 않았다.

    하지만 11g release2부터는 갱신이 되어 오류가 뜰 경우 NEXTVAL을 무시한다.

    즉, 번호 발급을 하지 않는다.

    이 말은 만약 실무에서 오라클의 버전이 11g보다 낮은 경우 오류를 내서는 안 된다는 의미이다.

     

     

     

    3. 시퀀스의 현재 번호 조회

     

    시퀀스명.CURRVAL FROM DUAL; : 최신값

    시퀀스명.NEXTVAL FROM DUAL; : 다음값

     

     

     

    4. 시퀀스 정보 조회

     

     

    * Meta Data와 Data Dictionary

     

    계정에 대한 정보가 들어있는 시스템 정보를 메타 데이터라고 한다.

    그리고 이 메타 데이터를 기록하고 있는 테이블을 data dictionary(자료 사전)라고 한다.

    USER_SEQUENCE, USER_CONSTRAINTS등이 data dictionary인 것이다.

     

     

     

    5. 시퀀스 삭제

     

    시퀀스도 객체이므로 DROP을 사용하여 제거한다.

     

    DROPDROP SEQUENCE 시퀀스명;

     

     

     

    <VIEW>

     

    테이블 : 하드웨어에 물리적으로 저장

     

    뷰 : 물리적으로 저장 공간이 존재하지 않는다.

    쿼리문(조회)만 가지고 있다. 즉, 쿼리문을 가지고 있는 객체이다.

    실질적으로 데이터를 가지고 있지 않지만 SELECT문으로 테이블 관리가 가능하여

    테이블로 착각하게 만드는 존재이다.

     

    뷰에서 저장하는 것은 쿼리문이다.

    즉, 뷰는 테이블이 아니다.

     

    SELECT문을 저장해 놓는 개념이므로 하나의 테이블에 대한 뷰의 개수는 제한이 없다.

     

     

     

    1. 뷰 생성

     

    CREATE VIEW 뷰이름

    AS SELECT 컬럼명 FROM 테이블명 

    WHERE 조건;

     

     

     

    2. 뷰의 정보 확인

     

    SELECT VIEW_NAME, TEXT FROM USER_VIEWS;

     

     

     

    3. 뷰에 데이터 삽입

     

    INSERT INTO 뷰이름

    VALUES(데이터들);

     

     

    뷰에 데이터가 삽입된 것을 확인할 수 있다.

     

     

    그런데 뷰가 참조 중인 테이블을 조회하면 뷰에 삽입한 데이터가 참조 테이블에도 삽입된 것을 확인할 수 있다.

    즉, 뷰가 바뀌면 뷰가 참조 중인 테이블도 변한다는 뜻이다.

     

    뷰에서 조작한 데이터가 참조 테이블에도 적용이 되고,

    참조 테이블에서 조작한 데이터도 뷰에서 적용이 된다.

     

     

     

    <DCL>

     

    SYS가 수행하는 명령어이다.

    DCL 설명
    GRANT 권한 부여
    REVOKE 권한 제거

     

     

    1. GRANT

     

    GRANT 권한 TO 계정명;

     

    권한 설명
    CREATE SESSION CONNECTION권한이 포함되어 있음
    CREATE TABLE 테이블을 생성하는 권한(메모리를 할당 받는 권한은 없다)
    CONNECT 접속 권한
    RESOURCE 메모리 할당 가능
    CREATE VIEW 뷰를 생성하는 권한

    CONNECT와 RESOURCE의 권한을 받으면 뷰를 제외하고 거의 모든 권한이 있는 것이다.

     

     

    2. REVOKE

     

    REVOKE 권한 FROM 계정명;

     

     

    3. 계정 삭제

     

    DROP USER 계정명;

    DROP USER 계정명 CASCADE;

     

    권한을 해제하고 계정을 삭제할 수 있다.

    SYSDBQ가 참조 중이기 때문이다.

     

    하지만 그럼에도 불구하고 삭제를 하는 경우에는 CASCADE 키워드를 사용한다.

     

Designed by Tistory.